2013-08-23 65 views
3

我有一個類:asp.net - MVC模型綁定到嵌套集合

public class ClientInformation{ 
    public string UserName {get; set;} 
    public ICollection<RegionDistrictCity> RegionDistrictCity 
    { 
     get; 
     set; 
    } 

    public class RegionDistrictCity 
    { 
    public string Region { get; set; } 
    public string District { get; set; } 
    public string City { get; set; } 
    } 
} 

應該如何格式化的HTML輸入元素的屬性區域,Distirct,市的name屬性,以使模型綁定填充集合「ICollection RegionDistrictCity」?

我試圖使用類型爲「ClientInformation」的參數的操作方法和像「[index] .PropertyName」格式化的html名稱屬性,但是在這種情況下只綁定了屬性「UserName」。

我試圖使用參數名稱爲「client」的操作方法,並具有像「client [index] .PropertyName」格式化的html名稱屬性,但它不起作用。 (在這種情況下,如果我有一個「列表客戶端」,那麼它會得到填充)

謝謝。

回答

11

在MVC4你應該使用for循環,而不是一個foreach到您的收藏綁定。然後,模型聯編程序將能夠在您提交數據時填充模型。

@for (int i = 0; i < Model.RegionDistrictCity.Count; i++) 
     { 
      @Html.EditorFor(model => Model.RegionDistrictCity[i].Region) 
     } 

但這個如果你不刪除或動態地添加項目到您的收藏纔會工作。 如果你想這樣做,你應該使用由steve sanderson創建的BeginCollectionItem助手。 http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

+1

這是解決方案。實際上,我需要在jQuery中創建「名稱」屬性,但模型綁定所需的架構與上面報告的相同。 – Christian

+1

我想你打算在你的'EditorFor'調用中使用變量'i'。 –