Скажем, у меня есть следующая структура в моем приложении 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