Более сложное (реальное) связывание моделей? - PullRequest
3 голосов
/ 28 апреля 2009

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

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

Я пробовал правильное связывание моделей ранее, но не смог заставить его работать должным образом. Все примеры показывают, как это работает с одним чрезвычайно простым типом, а не с несколькими сложными типами. Как связующий может узнать, какое поле для какого типа? Что если есть фрукты1 и фрукты2? Как связыватель узнает, какой конкретный тип использовать для моего интерфейса IFruit? Кроме того, мне интересно, как это будет работать, если я захочу подарить мне много фруктов.

1 Ответ

3 голосов
/ 28 апреля 2009

Я верю, что так должно быть:

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

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

...