Как использовать DisplayTemplates в ядре MVC 2.0 - PullRequest
0 голосов
/ 29 мая 2018

Я использовал DisplayTemplates в MVC5, чтобы избавиться от foreach петель из представлений

Если бы у меня были ProductDto и ProductController

, я бы поставил ProductDto.cshtml в

Представления / Product / DisplayTemplates /

или

Представления / Shared / DisplayTemplates /

, чтобы использовать шаблон для списка продуктов: я бы заменил петли foreach на следующую строку, чтобы перечислить все продукты с помощью шаблона: @Html.DisplayFor(m=>m.Products);

И если я хочу использовать ту же модель (ProductDto) в другом шаблоне отображения, например, скажем ProductDtoPrintView, тогда я бы создал другой шаблон под Views/Product/DisplayTemplates/ с именем ProductDtoPrintView.cshtml и передал бы templateName как @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,"")--works

@Html.DisplayFor(x =>x.Product, "ProductDtoPrintView") - не работает внутренняя ошибка сервера 500.

@Html.DisplayFor(x =>x.Products, "ProductDto") - не работает - ошибка 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 шаблон

В основномя не могу заставить работать ProductDtoPrintView, если я не удалю ProductDto.cshtml файл.

Кто-нибудь испытывает ту же проблему?и насколько точно эти DisplayTemplates должны работать в MVC Core?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...