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

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/

10-17 01:06