質問

私はモデルを持っています:

public class MyListModel
{
    public int ID {get;set;}
    public List<User> Users{get;set;}
}

私はforeachの内Html.EditorForメソッドを使用するにはどうすればよい?

@model MyListModel
<table>
  <tr>
    <th></th>
  </tr>
  @foreach (var item in Model.Users) {
     <tr>
       <td>
          @Html.EditorFor(item.Enabled)
       </td>
     </tr>
  }
</table>
役に立ちましたか?

解決

@Html.EditorFor(x=> item.Enabled)

これは、サーバーにそのようなモデルの背面を投稿するデフォルトではMVCでは動作しないことを何度も指摘されています。 適切ループ内EditorForと編集用 - forは、のように使用されるべきである:

 @for(var i = 0; i< Model.Users.Count;i++){
      Html.EditorFor(i=>Model.Users[i])
 }

他のヒント

@for (var i = 0; i < Model.Users.Count; i++)
{
<tr>
    <td>@Html.EditorFor(model => model.Users[i].Enabled)</td>
    <td>@Html.EditorFor(model => model.Users[i].FirstName)</td>
    <td>@Html.EditorFor(model => model.Users[i].LastName)</td>
</tr>
}

プラスユーザーの少なくとも一つの特性のためのいくつかの隠された変数が必要とされます:

@for (var i = 0; i < Model.Users.Count; i++)
{
    @Html.HiddenFor(model => model.Users[i].FirstName)
}

あなたがエレガント呼ぶだろうが、それはあなたのポストのアクションで結合に関して機能していないものを。

明示的foreach自分で使用するための他の理由(離れ例)はありますか?あなたはUser classとメイク@Html.EditorFor(model=>model.Users)用のカスタム・エディタ(または表示)ヘルパーを作ることができます。カミソリはカスタムヘルパーに各要素を処理するために内部foreachを使用します。

この例の管理方法は本当にありません手掛かりに質問を訪れる人のためだけのアイデア。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top