Frage

Rollen Sie mit mir und stellen Sie sich das folgende Beispiel vor:

Public ViewResult GiveMeFruit(int personId, string personName, int personAge, int fruitId){
    Person person = PersonService.GetPerson(personId);
    person.Name = personName;
    person.Age = age;
    person.Fruits.Add(FruitService.GetFruit(fruitId));
    ViewData.Person = person;
    View(ViewData);
}

Das sollte so besser gemacht werden

Public ViewResult GiveMeFruit(Person person, IFruit fruit){
    person.Fruits.Add(fruit);
    ViewData.Person = person;
    View(ViewData);
}

Ich habe vorhin versucht, die richtige Modellbindung durchzuführen, konnte es aber nicht richtig zum Laufen bringen.Alle Beispiele zeigen Ihnen, wie es mit einem extrem einfachen Typ funktioniert, niemals mit mehreren komplexen Typen.Woher soll der Modellbinder wissen, welches Feld für welchen Typ ist?Was ist, wenn es eine Frucht1 und eine Frucht2 gibt?Woher weiß der Binder, welchen Betontyp er für meine IFruit-Schnittstelle verwenden soll?Außerdem frage ich mich, wie es funktionieren würde, wenn ich meiner Person IEnumerable Früchte schenken möchte.

War es hilfreich?

Lösung

Ich glaube, es sollte so ablaufen:

<input type="text" name="person.Name" value="" />
<input type="text" name="person.Age" value="" />
<input type="text" name="fruit.Property1" value="" />
<input type="text" name="fruit.Property2" value="" />

Für Sammlungen:

<input type="text" name="fruit[0].Property1" value="" />
<input type="text" name="fruit[0].Property2" value="" />
<input type="text" name="fruit[1].Property1" value="" />
<input type="text" name="fruit[1].Property2" value="" />

Wie in diese Frage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top