我曾经DisplayTemplates
在 MVC5 中使用来摆脱foreach
视图中的循环
如果我有一个ProductDto
和ProductController
我会在ProductDto.cshtml
下面放置一个
视图/产品/DisplayTemplates/
或者
视图/共享/显示模板/
将模板用于产品列表:我将foreach
使用以下行替换循环以使用模板列出所有产品:@Html.DisplayFor(m=>m.Products);
例如,如果我想ProductDto
在不同的显示模板中使用相同的模型 (),ProductDtoPrintView
那么我将在Views/Product/DisplayTemplates/
name下创建另一个模板ProductDtoPrintView.cshtml
并传递templateName
as
@Html.DisplayFor(m=>m.Products,"ProductDtoPrintView")
。
但这似乎不适用于 MVC Core 2.0
我只能让一个模板适用于每个模型。而且 templateName 似乎根本没有任何影响。
我的测试:
什么时候ProductDto.cshtml
放在下面Views/Product/DisplayTemplates/
如果我只有一个ProductDto
模型显示模板,那么templateName
似乎真的没有任何影响。它适用于任何名称或没有名称。
@Html.DisplayFor(x =>x.Products)
-- 工作
@Html.DisplayFor(x =>x.Products,"")
-- 工作
@Html.DisplayFor(x =>x.Products,"whatever")
-- 工作
但是当我为同一个模型添加另一个显示模板时ProductDtoPrintView.cshtml
然后事情就有点搞砸了。
@Html.DisplayFor(x =>x.Products)
- 作品
@Html.DisplayFor(x =>x.Products,"")
- 作品
@Html.DisplayFor(x =>x.Products,"")
- 作品
@Html.DisplayFor(x =>x.Product, "ProductDtoPrintView")
--doesn't work 500 内部服务器错误。
@Html.DisplayFor(x =>x.Products, "ProductDto")
--doesnt 工作 - 500 错误
@Html.DisplayFor(x =>x.Products, "DisplayTemplates/ProductDto")
-- 工作并返回ProductDto.cshtml
模板
@Html.DisplayFor(x =>x.Products, "DisplayTemplates/ProductDtoWhatever")
-- 工作并返回ProductDto.cshtml
模板
@Html.DisplayFor(x =>x.Products, "DisplayTemplates/ProductDtoPrintView")
-- 工作并返回ProductDto.cshtml
模板
ProductDto.cshtml
除非我删除文件,否则基本上我无法让 ProductDtoPrintView 工作。
有人遇到同样的问题吗?以及这个 DisplayTemplates 在 MVC Core 中应该如何工作?