我曾经在MVC5中使用DisplayTemplates
来摆脱视图中的foreach
循环
如果我有ProductDto
和ProductController
我会在
下放置一个ProductDto.cshtml
观看/产品/展示模板/
或
查看/共享/ DisplayTemplates /
将模板用于产品列表:我会使用以下行替换foreach
循环,以使用模板列出所有产品:@Html.DisplayFor(m=>m.Products);
如果我想在不同的显示模板中使用相同的模型(ProductDto
),例如我们说ProductDtoPrintView
那么我会在Views/Product/DisplayTemplates/
下创建另一个名为{{1}的模板并传递ProductDtoPrintView.cshtml
为
templateName
。
但这似乎不适用于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中运行?