4

私のビューモデルには、次のようなアイテムのリストが含まれています。

public class MyViewModel
{
    public List<Item> Items { get; set; }
}

public class Item
{
   public string Question { get; set; }
   public string Answer { get; set; }
}

私のビューでは、エディターテンプレートを使用してすべてのアイテムをレンダリングしています。

@model MyApp.Models.MyViewModel
@using (Html.BeginForm()) {
    @* Display all of the questions and answers *@
    @Html.EditorFor(m => m.Items)
}

Item.cshtmlエディターテンプレートは、各質問とそれに関連する回答のエディターをレンダリングします。

@model MyApp.Models.Item
@Html.TextBoxFor(m => m.Question)
@Html.EditorFor(m => m.Answer)

レンダリングされたHTMLで、EditorForマジックは、モデル階層にマップする配列表記を含む要素名を生成します。例:

<input name="Items[0].Answer"

私の質問は次<div>のとおりです。idに同じ配列インデックス値が角かっこで囲まれている要素を次のようにレンダリングしたいと思います。

<div id="Items[0].something">
  <something />
</div>

Item.cshtmlが正しい角かっこ表記を含むid値を作成する簡単な方法はありますか?

4

2 に答える 2

7

MVC4ではNameFor拡張機能を使用できます。

<div id="@Html.NameFor(m => m.Comment)">
于 2013-03-11T19:41:42.633 に答える
2

質問を書く練習をしていると、答えがわかりました。質問を書くのに20分を費やしている限り、他の誰かが同じことをしたい場合に備えて、答えを共有したほうがよいと思います。

ビューモデルにマップするプレフィックスを含む名前を作成するには、次の手順に従います。

<div id="@ViewData.TemplateInfo.GetFullHtmlFieldName("something")">
    @Html.EditorFor(m => m.Comment)
</div>
于 2013-03-11T19:31:48.150 に答える