Asp.net mvc 3 C#MVC 3 Razor-使用DisplayTemplate调用DisplayTemplate
我有一个简单的产品列表,产品分为两个不同的类别,并根据其类别id在页面上显示不同 是否可以嵌套相同型号的显示模板,例如Asp.net mvc 3 C#MVC 3 Razor-使用DisplayTemplate调用DisplayTemplate,asp.net-mvc-3,razor,display-templates,Asp.net Mvc 3,Razor,Display Templates,我有一个简单的产品列表,产品分为两个不同的类别,并根据其类别id在页面上显示不同 是否可以嵌套相同型号的显示模板,例如 //DisplayTemplates/Product.cshtml @model MyNameSpace.Product @if (Model.CategoryId == (int)ASixthSenseCore.CategoryId.GiftCards) { @Html.DisplayForModel("GiftCards") } else { @Html
//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()
//显示模板/Product.cshtml
@模型MyNameSpace.Product
@if(Model.CategoryId==(int)ASixthSenseCore.CategoryId.GiftCards)
{
@Html.DisplayForModel(“GiftCards”)
}
其他的
{
@Html.DisplayForModel(“商品”)
}
//显示模板/GiftCards.cshtml
@模型MyNameSpace.Product
我是一张礼品卡
//DisplayTemplates/products.cshtml
@模型MyNameSpace.Product
我是商品
//我的看法
@模式列表
@Html.DisplayForModel()
我尝试过这样做,但没有中断,但也不起作用,产品模板按预期运行-我添加了一些调试文本,可以正确输出产品列表中每个对应的项。我怀疑模板引擎中存在某种阻塞子句,以避免它在自己的背面消失,对同一模板的递归调用可能是这种情况的一种可能性,话虽如此,我还是想问一下,因为这是一种处理列表的多个DisplayTemplates的简便方法,而不必使用foreach循环进行迭代。假设模板不在
DisplayeTemplates
文件夹中,那么代码应该可以工作
我将为
产品
创建单独的子类,并为它们创建模板。这将保持代码的整洁,并且您不必到处放置if
语句 谢谢,显示“e”只是问题中的一个输入错误。第二个模板不会显示,但我从来没有想过对这些项目进行子分类-这是一个非常整洁的解决方案,谢谢!我就是这么想的。如果只是在集合中循环,则根本不需要DisplayTemplates/Product.cshtml
。即使在IEnumerable
中传递不同的子类,MVC也会使用适当的模板。