3

和我一起滚动并想象以下示例:

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 界面使用什么具体类型?此外,我想知道如果我想给我的 Person 一个 IEnumerable 水果,它会如何工作。

4

1 回答 1

3

我相信它应该是这样的:

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

就像在这个问题中一样。

于 2009-04-28T14:17:48.687 回答