ディスプレイテンプレートを使用できます。
Benefits
はタイプ
List<BaseBenefit>
のあなたのビューモデルのプロパティである
@Html.DisplayFor(x => x.Benefits)
:メインビューでそう。
~/Views/Shared/DisplayTemplates/SpecificBenefit1.cshtml
:
@model SpecificBenefit1
...
~/Views/Shared/DisplayTemplates/SpecificBenefit2.cshtml
:今あなたがしなければならないすべては、異なる可能なタイプの表示テンプレートを定義することです
@model SpecificBenefit2
...
表示テンプレートの場所と名前は重要です。それらは〜/ Views/Shared/DisplayTemplatesフォルダーに置かなければなりません。コントローラー間で再利用されない場合は、~/Views/SomeController/DisplayTemplates
フォルダーにも定義することができます。テンプレートの名前は、リスト内の要素の型と同じでなければなりません。
列挙可能なプロパティのメインビューでDisplayForを使用すると、ASP.NET MVCはこのリストの各要素に対応する表示テンプレートを自動的に呼び出します。
ビューはベースタイプを取得しても実際のタイプを使用しますか? –
キャスティングなしですか? –
@GuyZ、はい、ASP.NET MVCはランタイムタイプを使用して適切な表示/エディタテンプレートを選択します。 –