これは私にとって少し冗長すぎるようです... ループの標準に頼らざるを得ずにカウンタを作成する方法はありますか?
ええ、あまりにも冗長すぎるようです。エディタテンプレートを使用している場合は、ループが必要ないため、ループも冗長すぎるようです。
<ul>
@Html.EditorFor(x => x.PhoneNumberEntries)
</ul>
、その後明らかにあなたは、自動的にPhoneNumberEntries
コレクションの各要素に対してレンダリングされるカスタムエディタのテンプレート(~/Views/Shared/EditorTemplates/PhoneNumberEntry.cshtml
)定義します
@model PhoneNumberEntry
<li>
<span>@Model.PhoneNumber</span>
@Html.EditorFor(m => m.PhoneNumber)
</li>
あなたものようにループを記述する必要はありませんがテンプレートは慣例に従って動作します。
エディタテンプレートの名前と場所が重要であることに注意してください。アプリケーションの異なるコントローラに属するビュー間でこのテンプレートを共有する場合は、~/Views/Shared/EditorTemplates
の中に配置する必要があります。このテンプレートは、ASP.NET MVCが最初に探す場所です。または、~/Views/XXX/EditorTemplates
の中に入れることもできます。XXX
は、現在のコントローラの名前です。次に、エディターテンプレートの名前は、コレクションプロパティーのためのアジャストとして使用されるタイプの名前でなければなりません。あなたは何もあなたのメインビューモデルを持っていない場合
ので:
public IEnumerable<FooBarViewModel> FooBars { get; set; }
対応するテンプレートの名前はFooBarViewModel.cshtml
になり、明らかそれが強くFooBarViewModel
に型付けされます。
ループの何が問題なのですか? – jrummell
@jrummell、それらはビューに属しません。 Foreachループは、コントローラ、モデル、...に属します。ビューは、データのみを表示するために使用されます。データのコレクションを表示する必要がある場合は、単にエディタ/ディスプレイテンプレートを使用します。 –