我正在尝试为一组项目创建一个编辑表单。 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
}
答案 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>
传递给您的观点。
希望这会有所帮助