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_Model Binding - Fatal编程技术网

Asp.net mvc 手动将复杂模型数组绑定到控制器操作

Asp.net mvc 手动将复杂模型数组绑定到控制器操作,asp.net-mvc,model-binding,Asp.net Mvc,Model Binding,出于某种原因,我试图手动绑定一个复杂模型的数组,但在我的控制器中得到一个空引用异常,绑定器无法检索参数。我发现这非常相似(唯一的区别实际上是模型的类型),但我不明白为什么它在我的案例中不起作用 这是我的 在我的控制器中 public ActionResult MyAction(ComplexType[] models) { foreach(ComplexType c in models) // Exception at this point, the parameter is null

出于某种原因,我试图手动绑定一个复杂模型的数组,但在我的控制器中得到一个空引用异常,绑定器无法检索参数。我发现这非常相似(唯一的区别实际上是模型的类型),但我不明白为什么它在我的案例中不起作用

这是我的

在我的控制器中

public ActionResult MyAction(ComplexType[] models)
{
    foreach(ComplexType c in models) // Exception at this point, the parameter is null
    {
        //Do stuff
    }
}
我认为:

    @using(Html.BeginForm("MyAction","Controller"))
    {
        @Html.AntiForgeryToken()
<table>
        @for (int i = 0; i < Model._MyProperty.Count; i++ )
        {
            var d = Model._MyProperty[i];
            @:<tr>
                @:<td> @Html.CheckBox("models.Property1["+i+"]", d.Property1) 
                    @Html.Hidden("models.ID["+i+"]",d.ID)
                    @Html.Hidden("models.Property2["+i+"]")
                    @Html.Hidden("models.Property3["+i+"]")
                    @Html.Hidden("models.Property4["+i+"]")
                @:  </td>
            @:</tr>
        }

 //Submit Button
 </table>

}

我试图在控制器中将ComplexType[]更改为ICollection,但没有成功。另外,仅供参考,我的ViewModel不是我绑定到bing的模型。在这个单一视图中,我需要几个表单处理不同的数据类型

您正在按如下方式命名循环中的元素

<input type="hidden" name="models.Property2[0]" value
<input type="hidden" name="models.Property2[1]" value

<input type="hidden" name="models.Property2[0]" value
<input type="hidden" name="models.Property2[1]" value
<input type="hidden" name="models[0].Property2" value
<input type="hidden" name="models[1].Property2" value