2012-05-09 61 views
0

我有以下視圖模型:我的觀點不會與我的模型綁定在MVC

public class CityViewModel 
    { 
     public CityViewModel() {  
      CityDetails = Enumerable.Range(1,2).Select(x => new CityDetail()).ToList(); 
     } 

     public City City { get; set; } 
     public IList<CityDetail> CityDetails { get; set; } 

     public class CityDetail 
     { 
      public CityDetail() { 
       Correct = true; 
      } 
      public bool Correct { get; set; } 
     } 

在我看來,我有以下幾點:

 @foreach (int index in Enumerable.Range(0, Model.CityDetails.Count())) 
     { 
     <input type="hidden" name="CityDetails[@index]_Correct)" value="false" /> 
     <input type="checkbox" id="CityValid" name="CityDetails[@index]_Correct" value='@Model.CityDetails[index].Correct' /> 

我不能讓任何約束力對名爲「正確」字段的模型的看法,所以我想知道我使用的命名。有沒有人有一個想法可能是錯的?

+0

您需要包含更多信息。你的'@ model'語句是什麼樣的,你爲什麼將兩個模型命名爲同名? –

+0

@model WebUx.CityViewModel –

+0

怎麼樣控制器..你可能錯過了什麼 –

回答

2

映射集合的最簡單和最好的方法是使用索引器。使用以下代碼片段

@for (int i = 0; i < Model.CityDetails.Count; i++) 
{ 
    @Html.EditorFor(x => Model.CityDetails[i].Correct) 
} 
1

沒有必要讓您的視圖看起來像那樣。創建一個編輯器模板,然後使用Html.EditorFor(x => x.CityDetails)。這將處理枚舉集合並正確寫出元素,以便將它們映射回列表中。

相關問題