2011-04-11 70 views
1

我有一個使用User對象作爲模型的部分模板。用戶擁有一組帳戶。在這個部分模板上,我有一個循環如下。該_account局部模板被綁定到Account類ASP.Net MVC3父子模型綁定

@foreach (var item in Model.Accounts) 
      { 
       <tr> 
        <td colspan="6"> 
         <div> 
          @Html.Partial("_Account", item) 
         </div> 
        </td> 
       </tr> 

      } 

在我的控制器方法我最初嘗試

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult UserDetails(User user, string actionType) 

但User.Accounts集合爲空。然後我嘗試了這個。 Accounts集合仍然是空的。

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult UserDetails(User user, 
          [Bind(Prefix="User.Accounts")] 
          FixupCollection<Account> Accounts, 
          string actionType) 

我可以使用默認的Modelbinder實現來實現嗎?還是我需要做任何不同的事情?

回答

4

是的,你可以使用默認的模型綁定器。你只需要正確地命名你的領域。所以,你需要你的循環輸出是這樣的:

... 
<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重新分配名稱。但這都是可能的。這個問題可以讓更詳細的模型綁定:

ASP.NET MVC: Binding a Complex Type to a Select

+0

:唯一的問題我在這個發現的是,它在HTML暴露你的類名。 – 2012-03-09 21:18:13