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