Скажем, у меня есть следующая структура в моем приложении ASP.NET MVC 3.
- Элементы
- Index.cshtml
- Категория
- Общий
- _Index.cshtml
- _Site.cshtml
- Index.cshtml
Оба файла Index.cshtml
используют _Index.cshtml
, так как страница макета и _Index
вложены в макет _Site
.
Items/Index
реализует необязательные разделы, определенные в _Index
. Shared/Index
пусто.
Режим Items/Index
отлично работает. Так как Категории не имеют индекса, он использует тот, который находится в общей папке. Это не работает.
Он выдает ошибку
Метод "RenderBody" не был вызван для страницы макета "~/Views/Shared/_Index.cshtml".
Если _Site
вызывает RenderBody
, а _Index
наследует от _Site
, не соответствует ли содержимое в _Index
требуемому вызову RenderBody
, а Shared/Index.cshtml
может быть пустым?
Причина, по которой я спрашиваю, заключается в том, что у меня есть приложение ASP.NET MVC 1, которое реализовало эту структуру с использованием мастер-страниц, и она отлично работала, но преобразование ее в MVC 3 с помощью Razor вызывает эту проблему.
Вот основные сведения о том, что я описываю:
_Site.cshtml
<!DOCTYPE html>
// head
<body>
@RenderBody()
</body>
_Index.cshtml
@{
Layout = "~/Views/Shared/_Site.cshtml";
}
<div id="sub-menu">
// Markup
</div>
// More markup
@RenderSection("SectionOne", required: false)
@RenderSection("SectionTwo", required: false)
Items/Index.cshtml(рабочий)
@{
Layout = "~/Views/Shared/_Index.cshtml";
}
@section SectionOne {
// Markup
}
Shared/Index.cshtml(ошибка RenderBody)
@{
Layout = "~/Views/Shared/_Index.cshtml";
}
// Rest of this file is empty