Если вы полагаетесь на _ViewStart.cshtml
, чтобы применить _Layout.cshtml
к частичному, не делайте этого.Попробуйте явно установить Layout
в начальном блоке кода.
Я использую вложенные макеты для набора пользовательских шаблонов редактора в моем последнем проекте, пытаясь получить _ViewStart.cshtml
, чтобы вставить эту папку простоне работает, потому что _ViewStart
не выполняется для Partials.Как только я вручную указал Layout
непосредственно в частичном, это было нормально.
Лично я был доволен этим - это было лишь незначительное раздражение.
Итак, в качестве примера:
(In ~/Views/Shared/_PartialLayout.cshtml
)
<div class="partialContainer">
@RenderBody()
</div>
А вот примерный фрагмент выглядит следующим образом:
{
Layout = "~/Views/Shared/_PartialLayout.cshtml";
}
<p>Hello World!</p>
(Обратите внимание, что вы должны явно установите макет, потому что _ViewStart
не обрабатывается для частичек)
Во время выполнения - это частичное отображение будет фактически:
<div class="partialContainer">
<p>Hello World!</p>
</div>
То, чего я считаю, это то, чего вы хотите достичь.
Обратите внимание, что фактическое расположение макета частичных представлений не имеет значения, вы можете поместить его в общую папку, если хотите, или вы можете поместить его в папку представлений определенного контроллера - если вы затем обращаетесьэто правильно в частичном представлении члена Layout
, все будет хорошо.
Ответ на этот другой SO: Правильный способ использования _viewstart.cshtml и частичных Razor представлений? , который фактически ссылается на более раннюю ошибку в Razorтакже использует тот факт, что PartialViewResults не выполняет ViewStart.