我有一个简单的产品列表,产品分为两个不同的类别,并根据其类别 ID 在页面上显示不同。
是否可以嵌套相同模型类型的 DisplayTemplate,例如
//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()
我试过这样做,它没有中断,但它也不起作用,产品模板按预期运行 - 我添加了一些调试文本,可以正确输出产品列表中的每个相应项目。我怀疑模板引擎中有某种阻塞子句,以避免它消失在它自己的背面,递归调用同一模板是这种情况的可能性,我说我想我会问,因为这会很方便处理列表的多个 DisplayTemplate 的方法,而无需使用 foreach 循环对其进行迭代。