Я использую _viewstart.cshtml для автоматического назначения того же макета Razor моим представлениям.
Это простой файл в корне моей папки Views, который выглядит так:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Это более СУХОЙ, чем добавление директивы @Layout для каждого вида.
Тем не менее, это создает проблему для Razor частично представлений , поскольку они запускают содержимое _viewstart.cshtml и, следовательно, неправильно присваивают себе макет, что делает их больше не частичными.
Вот гипотетический проект, показывающий файл _viewstart.cshtml, общий файл _layout.shtml и частичное представление («AnonBar.cshtml»).
В настоящее время я могу обойти это путем добавления следующей строки в каждое частичное представление:
@{
Layout = "";
}
Это кажется неправильным способом обозначить представление как частичное в Razor. (Обратите внимание, что в отличие от механизма просмотра веб-форм, расширение файла одинаково для частичных представлений.)
Другие варианты я рассмотрел, но это еще хуже:
- Поместить все частичные представления в общую папку, чтобы они могли совместно использовать общий _viewstart.cshtml. Это нарушает соглашение о представлениях, находящихся в той же папке, что и их контроллер.
- Не используя частичные представления.
Это то, что все еще дорабатывается командой разработчиков движка Razor, или я упускаю фундаментальную концепцию?