2012-04-06 67 views
2

我想知道如果下面的視圖模型提交的形式有可能在MVC 3與子集合

我基本上有一個孩子集合視圖模型,我想用一個Ajax形式發佈:

型號

[Serializable] 
    public class Customer 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 

     public int CurrentSalesRep { get; set; } 

     public List<SelectListItem> SalesReps { get; set; } 
    } 

    [Serializable] 
    public class CustomerVM 
    { 
     public List<Customer> Customers { get; set; } 
    } 

SalesController

 [HttpPost] 
     public ActionResult Customers(CustomerVM customer) 
     { 
      return PartialView(customer); 
     } 

查看

@model DropdownSave.Models.CustomerVM 

<div> 
    @{ 
     using(Ajax.BeginForm("Customers", "Sales", new AjaxOptions { UpdateTargetId = "gridArea",HttpMethod="Post" })){ 
     <div id="gridArea"> 
      <table> 
      @foreach (var m in Model.Customers) 
      { 
       <tr> 
        <td> 
         @Html.TextBoxFor(a => m.FirstName) 
        </td> 
        <td> 
         @Html.TextBoxFor(a => m.LastName) 
        </td> 
       </tr> 
      } 
      </table>     
      <input type="submit" value="Save" /> 

     </div> 
     } 
    } 
</div> 

基本上我能夠將一個CustomerVm實例發佈到控制器,但子集合爲空。我正在嘗試什麼?

回答

2

解決它自己:

貌似視圖必須更新以下

<div> 
    @{ 
     using(Ajax.BeginForm("Customers", "Sales", new AjaxOptions { UpdateTargetId = "gridArea",HttpMethod="Post" })){ 
     <div id="gridArea"> 
      <table> 
      @for (int i = 0; i < Model.Customers.Count; i++) 
      { 
       <tr> 
        <td> 
         @Html.LabelFor(m => m.Customers[i].FirstName) 
        </td> 
        <td> 
         @Html.LabelFor(m => m.Customers[i].LastName) 
        </td> 
        <td> 
         @Html.HiddenFor(m => m.Customers[i].CurrentSalesRep) 
        </td> 
        <td> 
         @Html.DropDownListFor(m => m.Customers[i].CurrentSalesRep,Model.Customers[i].SalesReps) 
        </td> 
       </tr> 
      } 
      </table>     
      <input type="submit" value="Save" /> 

     </div> 
     } 
    } 
</div> 

我也加入到捕捉在下拉菜單中選擇項目的能力