2012-05-09 16 views
0

で私のモデルと結合しない:私の見解は、私は次のviewmodelているMVC

 @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' /> 

が、私はいずれかからバインディングを得ることができない:私は以下の私の見解で

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; } 
     } 

を持っています"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)を使用します。これは、コレクションを列挙し、適切に要素を書き出してリストに戻すように処理します。