Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET Mvc 3模型绑定到集合无效_Asp.net Mvc_Asp.net Mvc 3_Model Binding - Fatal编程技术网

Asp.net mvc ASP.NET Mvc 3模型绑定到集合无效

Asp.net mvc ASP.NET Mvc 3模型绑定到集合无效,asp.net-mvc,asp.net-mvc-3,model-binding,Asp.net Mvc,Asp.net Mvc 3,Model Binding,我正在尝试为项目集合创建编辑表单。该列表为null,当我检查ModelState时,它的有效属性为“true”,并且有0个键。人员实体上没有必需的属性 看法 @使用(Html.BeginForm(“UpdatePeople”,“People”,FormMethod.Post})) { @对于(var i=0;it.People[i].FirstName) } } 控制器 [HttpPost] public ActionResult UpdatePeople(List<People&

我正在尝试为项目集合创建编辑表单。该列表为null,当我检查ModelState时,它的有效属性为“true”,并且有0个键。人员实体上没有必需的属性

看法

@使用(Html.BeginForm(“UpdatePeople”,“People”,FormMethod.Post}))
{
@对于(var i=0;it.People[i].FirstName)
}
}   
控制器

[HttpPost]
public ActionResult UpdatePeople(List<People> items)
{                    
 // items is null
}
[HttpPost]
公共操作结果更新人员(列表项)
{                    
//项目为空
}

您的操作方法接收的不是类型为
List
的模型,而是您的ViewModel

我看不到您的模型定义,所以请提供一个小示例

看起来您有一个模型,它有一个名为
People
的属性,类型为
List

它会起作用的

如果ViewModel只有一个属性
People
,则不需要此模型。 您可以将
列表
传递给视图


希望这会有所帮助

操作方法将绑定到传递给它的任何内容,以便与请求中发送的内容相匹配。它不必是传递给视图的视图模型。它可以是随机属性,也可以是属性与参数名对齐的任何模型类。是的,我知道ModelBinder是如何工作的。但这就是问题所在。你说得对,也许我应该说得更清楚些。
[HttpPost]
public ActionResult UpdatePeople(List<People> items)
{                    
 // items is null
}
public class MyViewModel
{
    public List<People> People { get; set; }
    // other properties
}
List<People>
[HttpPost]
public ActionResult UpdatePeople(MyViewModel model)
{                    
    // model.People exists

}