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