0

私は次のビューモデルを持っています:

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

ビューから「正しい」という名前のフィールドのモデルへのバインドを取得できないため、使用した名前について疑問に思っています。誰かが何が間違っているのか考えていますか?

4

2 に答える 2

2

コレクションをマップする簡単で最良の方法は、インデクサーを使用することです。次のコードスニペットを使用します

 @for (int i = 0; i < Model.CityDetails.Count; i++)
 {
    @Html.EditorFor(x => Model.CityDetails[i].Correct)
 }
于 2012-05-09T02:47:46.633 に答える
1

あなたの見解がそのように見える必要はありません。エディターテンプレートを作成してから、Html.EditorFor(x => x.CityDetails)を使用します。これにより、コレクションの列挙と要素の適切な書き込みが処理され、リストにマップされます。

于 2012-05-09T02:00:27.853 に答える