如何在MVC核心2.0

时间:2018-05-29 11:13:31

标签: asp.net-core asp.net-core-mvc asp.net-core-mvc-2.0 display-templates

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

如果我有ProductDtoProductController

我会在

下放置一个ProductDto.cshtml
  

观看/产品/展示模板/

  

查看/共享/ DisplayTemplates /

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

如果我想在不同的显示模板中使用相同的模型(ProductDto),例如我们说ProductDtoPrintView那么我会在Views/Product/DisplayTemplates/下创建另一个名为{{1}的模板并传递ProductDtoPrintView.cshtmltemplateName

但这似乎不适用于MVC Core 2.0

我只能为每个模型获取一个模板。而且templateName似乎没有任何影响。

我的测试:

@Html.DisplayFor(m=>m.Products,"ProductDtoPrintView")置于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,"") - 无法解决500内部服务器错误。

@Html.DisplayFor(x =>x.Product, "ProductDtoPrintView") - 工作 - 500错误

@Html.DisplayFor(x =>x.Products, "ProductDto") - 工作并返回@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文件,否则基本上我无法使ProductDtoPrintView正常工作。

任何人遇到同样的问题?这个DisplayTemplates应该如何在MVC Core中运行?

0 个答案:

没有答案