ASP.NET Mvc 3模型绑定到一个无法正常工作的集合

时间:2011-11-30 15:09:07

标签: asp.net-mvc asp.net-mvc-3 model-binding

我正在尝试为一组项目创建一个编辑表单。 List为null,当我检查ModelState时,它的Valid属性为“true”,它有0个键。 People实体上没有必需的属性。

查看

@using(Html.BeginForm("UpdatePeople", "People", FormMethod.Post }))
{
    @for (var i = 0; i < Model.People.Count; i++)
    {
        <div>


 @Html.TextBoxFor(t => t.People[i].FirstName)



       </div>
     }
}   

控制器

[HttpPost]
public ActionResult UpdatePeople(List<People> items)
{                    
 // items is null
}

1 个答案:

答案 0 :(得分:1)

您的操作方法不会收到它接收您的ViewModel的List<People>类型的模型。

我没有看到你的模型定义,所以有点样本。

看起来你有一个Model,它有一个People类型List<People>的属性。

public class MyViewModel
{
    public List<People> People { get; set; }
    // other properties
}

如果您现在提交表单,MVC会尝试绑定它。你的行动方法说它收到了

List<People>

但您的发送MyViewModel

因此,如果您将操作方法​​更改为

[HttpPost]
public ActionResult UpdatePeople(MyViewModel model)
{                    
    // model.People exists

}

它会起作用。

如果您的ViewModel只有一个属性People,则不需要此模型。 您可以将List<Person>传递给您的观点。

希望这会有所帮助