7

我曾经DisplayTemplates在 MVC5 中使用来摆脱foreach视图中的循环

如果我有一个ProductDtoProductController

我会在ProductDto.cshtml下面放置一个

视图/产品/DisplayTemplates/

或者

视图/共享/显示模板/

将模板用于产品列表:我将foreach使用以下行替换循环以使用模板列出所有产品:@Html.DisplayFor(m=>m.Products);

例如,如果我想ProductDto在不同的显示模板中使用相同的模型 (),ProductDtoPrintView那么我将在Views/Product/DisplayTemplates/name下创建另一个模板ProductDtoPrintView.cshtml并传递templateNameas @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 中应该如何工作?

4

0 回答 0