0

簡単な商品リストがあります。商品は2つの異なるカテゴリに分類され、カテゴリIDに応じてページに表示が異なります。

同じモデルタイプのDisplayTemplatesをネストすることは可能ですか?

//DisplayTemplates/Product.cshtml
@model MyNameSpace.Product


@if (Model.CategoryId == (int)ASixthSenseCore.CategoryId.GiftCards)
{
    @Html.DisplayForModel("GiftCards")
}
else
{
    @Html.DisplayForModel("Merchandise")
}



//DisplayTemplates/GiftCards.cshtml
@model MyNameSpace.Product

<div>I am a Gift Card</div>


//DisplayTemplates/Merchandise.cshtml
@model MyNameSpace.Product

<div>I am Merchandise</div>


//My View
@mode List<MyNameSpace.Product>

@Html.DisplayForModel()

これを試してみましたが、壊れませんが、どちらも機能しません。製品テンプレートは期待どおりに実行されます。製品リストの対応する各アイテムを正しく出力するデバッグテキストを追加しました。テンプレートエンジンには、同じテンプレートへの再帰呼び出しがこのシナリオの可能性であるため、テンプレートエンジンがそれ自体の裏側に消えないようにするための、ある種のブロッキング句があると思います。 foreachループでリストを反復することなく、リストの複数のDisplayTemplateを処理する方法。

4

1 に答える 1

1

テンプレートがDisplayeTemplatesフォルダにない場合、コードは機能するはずです。

のサブクラスを個別にProduct作成し、それらのテンプレートを作成します。これにより、コードがよりクリーンに保たれ、ifステートメントをどこにでも配置する必要がなくなります。

于 2012-03-21T10:46:32.090 に答える