Вопрос

Покатайтесь со мной и представьте следующий пример:

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);
}

Это должно быть сделано лучше вот так

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

Ранее я пробовал правильную привязку модели, но мне не удалось заставить ее работать должным образом.Все примеры показывают вам, как это работает с одним чрезвычайно простым типом, но никогда с несколькими сложными типами.Как бы modelbinder узнал, какое поле для какого типа?Что, если есть fruit1 и fruit2?Как связующий узнает, какой тип бетона использовать для моего интерфейса iFruit?Кроме того, мне интересно, как бы это сработало, если бы я захотел подарить своему Человеку бесчисленное количество фруктов.

Это было полезно?

Решение

Я считаю, что это должно происходить следующим образом :

<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="" />

Для коллекций :

<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="" />

Как в этот вопрос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top