Asp.net mvc 3 ASP.Net MVC3父子模型绑定
我有一个使用用户对象作为模型的部分模板。用户有一个帐户集合。在这个部分模板上,我有一个循环,如下所示。_Account部分模板已绑定到Account类Asp.net mvc 3 ASP.Net MVC3父子模型绑定,asp.net-mvc-3,razor,model-binding,defaultmodelbinder,Asp.net Mvc 3,Razor,Model Binding,Defaultmodelbinder,我有一个使用用户对象作为模型的部分模板。用户有一个帐户集合。在这个部分模板上,我有一个循环,如下所示。_Account部分模板已绑定到Account类 @foreach (var item in Model.Accounts) { <tr> <td colspan="6"> <div>
@foreach (var item in Model.Accounts)
{
<tr>
<td colspan="6">
<div>
@Html.Partial("_Account", item)
</div>
</td>
</tr>
}
但是User.Accounts集合为空。然后我试了这个。帐户集合仍然是空的
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UserDetails(User user,
[Bind(Prefix="User.Accounts")]
FixupCollection<Account> Accounts,
string actionType)
[AcceptVerbs(HttpVerbs.Post)]
公共操作结果用户详细信息(用户,
[Bind(Prefix=“User.Accounts”)]
固定收款账户,
字符串操作类型)
我可以使用默认的Modelbinder实现来实现这一点吗?或者我需要做任何不同的事情吗?是的,您可以使用默认的Modelbinder。您只需要正确命名字段。因此,您需要循环输出如下内容:
...
<input type="text" name="user.Accounts[0].SomeTextField" />
<input type="text" name="user.Accounts[0].SomeOtherTextField" />
...
<input type="text" name="user.Accounts[1].SomeTextField" />
<input type="text" name="user.Accounts[1].SomeOtherTextField" />
...
。。。
...
...
如果您需要添加/删除帐户,硬编码索引会变得有点棘手。您可以在回发之前使用javascript重新分配名称。但这都是可能的。此问题提供了有关模型绑定的更多详细信息:
是的,您可以使用默认的模型活页夹。您只需要正确命名字段。因此,您需要循环输出如下内容:
...
<input type="text" name="user.Accounts[0].SomeTextField" />
<input type="text" name="user.Accounts[0].SomeOtherTextField" />
...
<input type="text" name="user.Accounts[1].SomeTextField" />
<input type="text" name="user.Accounts[1].SomeOtherTextField" />
...
。。。
...
...
如果您需要添加/删除帐户,硬编码索引会变得有点棘手。您可以在回发之前使用javascript重新分配名称。但这都是可能的。此问题提供了有关模型绑定的更多详细信息:
使用编辑器模板而不是局部视图-无需硬编码索引,因为该模板将自动正确索引所有对象,即使在添加和删除帐户时也是如此。见我对这个问题的回答: 编辑器模板的小说明如下:
使用编辑器模板而不是局部视图-无需硬编码索引,因为该模板将自动正确索引所有对象,即使在添加和删除帐户时也是如此。见我对这个问题的回答: 编辑器模板的小说明如下:
:我发现的唯一问题是它在HTML中公开了您的类名。我发现的唯一问题是它在HTML中公开了您的类名。