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