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