和我一起滚动,想象以下示例:
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如何知道哪种类型的字段?如果有一个水果1和一个水果2怎么办?活页夹如何知道我的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="" />
就像在this question中。
关于c# - 更复杂的(现实生活中的)模型绑定(bind)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/798127/