更复杂(现实生活)的模型绑定?

时间:2009-04-28 14:06:16

标签: c# .net asp.net-mvc model-binding

跟我滚动,想象下面的例子:

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

1 个答案:

答案 0 :(得分: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="" />

喜欢this question