1

データベースのエントリを編集する方法を見つけようとしています。モデルは次のようになります。

public class ComplexModel {
public int id {get;set;}
public string Name {get;set;}
public List<Lines> FavoriteNumbers {get;set;}
}

public class Lines{
public int id {get ;set ;} 
public string FavoriteLetter {get;set;}
}

私のビューには、入力ボックスを一覧表示するためのこれがあります

@model MvcApplication.Models.ComplexModel
@using(BeginForm()){
<fieldset>
<legend>Enter your name</legend>
@Html.EditorFor(model=>model.Name)
</fieldset>
@foreach (var item in Model.FavoriteNumber)
            {       

              <fieldset>
                <legend>Favorite number:</legend>
                @Html.EditorFor(model=>item.FavoriteLetter)
              </fieldset>
            }
<input type="submit" value="Save">
}

ComplexModelのすべての行をこのように編集することは可能でしょうか?編集しようとしましたが、コントローラーにリストが空/nullと表示されます。

4

2 に答える 2

2

Model.FavoriteNumberではなくModel.FavoriteNumberSを使用する必要があります。

于 2013-01-08T12:40:13.250 に答える
0

foreachの代わりに、forループを使用します。次のようになります。

@for (int i=0; i < Model.FavoriteNumbers.Count; i++)
        {       
          <fieldset>
            <legend>Favorite number:</legend>
            @Html.EditorFor(model=>model.FavoriteNumbers[i].FavoriteLetter)
            @Html.HiddenFor(model=>model.FavoriteNumbers[i].id)
          </fieldset>
        }

アイテムに何かが投稿されるように、id付きのHiddenForを追加しました。それ以外の場合、データが投稿され、フィールドが空のままになると、リストは分割されます。

于 2013-01-08T12:40:31.620 に答える