Laden...

Was ist FormCollections

Erstellt von CoderboyPB vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.271 Views
C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 11 Jahren
Was ist FormCollections

Hallo 😃

ich habe in einem MS Tutorial folgende Funktion (MVC Anwendung) gefunden:


[HttpPost]
public ActionResult Edit(int id, FormCollection formCollection, string[] selectedCourses)
{
  // Hier unwichtiger Funktionsbody
}

Ich vermute ja, mal, dass es damit zu tun hat, dass es sich bei selectedCourses um Daten aus einer CheckBox Gruppe handelt, aber die genaue Bedeutung wird mir nicht klar, zumal formCollection auch im Funktionsbody überhaupt nicht vorkommt ...

In der HTML Seite mit dem Formular kommt formCollection auch nicht vor.

Scheint wohl irgendwie ein allgemeines Vorgehen zu sein.
Wäre mal jemand so freundlich und könnte mir das in ein zwei Sätzen erklären?
Danke

LG Mirco

1.002 Beiträge seit 2007
vor 11 Jahren

Hallo CoderboyPB,

kurz gesagt enthält formCollection ein Key-Value-Pair-Aufzählung aller übermittelten Formularwerte.
Eine beispielhafte Verwendung der FormCollection-Klasse findest du hier: How can a formcollection be enumerated in ASP.NET MVC?.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 11 Jahren

Danke für die schnelle Antwort 😃

Verstehe ich das richtig, dass dieses Objekt automatisch bei Multipart Formular Daten (also z.B. Checkboxen oder multiple Select Boxen) mit übergeben werden, und deshalb von der Funktionssignatur erwartet werden, auch wenn man sie nicht verwendet?

16.807 Beiträge seit 2008
vor 11 Jahren

Du brauchst eigentlich keine Formcollection bei MVC.

Die FormCollection enthalt alle Daten der Felder innerhalb der abgesendeten Form. Man kann sich dann (umständlich) raussuchen, was man braucht.

Wenn Du eine Klasse hast, die die Form repräsentiert - also die Properties der Klasse entsprechen den Input-Feldern der Form - dann wird das alles automatisch gemappt. (Das würde sich hier auch mit den selectedCourses anbieten.


public ActionResult Submit( FormCollection formCollection )
{
   // Fiktiv:
   Console.WriteLine( "Der Vorname lautet: " + formCollection["Vorname"]); // Vorher prüfen, obs überhaupt existiert

}

besser ist jedoch

public class FormSubmitModel
{
   public String Vorname { get; set; }
   public String Nachname { get; set; }

   // ...
}

public ActionResult Submit( FormSubmitModel submitModel )
{
   // ...

   // Fiktiv:
   Console.WriteLine( "Der Vorname lautet: " + submitModel .Vorname);
}

oder wenns nur 1-2 Werte sind

public ActionResult Submit( String vorname, String nachname )
{
   // ..

   // Fiktiv:
   Console.WriteLine( "Der Vorname lautet: " + vorname);
}

Es bietet sich aber immer an, mit ViewModels und SubmitModels zu arbeiten - IMMER.

C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 11 Jahren

Thanx 😃