У меня есть страница макета и некоторые страницы, которые ее используют. Но я хочу реализовать навигационное управление на некоторых подстраницах, которые его используют. Поэтому я хочу использовать другую вложенную страницу макета. Возможно ли это?
Могу ли я иметь/цепочку более 1 _Layout страниц в MVC 3? для страницы cshtml?
Ответ 1
Да, он отлично работает. Просто скажите вашей странице макета, чтобы использовать другую страницу макета
@{ Layout = "pathToMyOtherLayout"; }
Вы также можете использовать разделы для перехода к родительским макетам. Например:
@Section Headers {@RenderSection("Headers")}
Ответ 2
Вы можете связывать страницы так же, как мастер-страницы, в _ViewStart.cshtml вы увидите, как определяется страница макета:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Вы можете просто добавить этот раздел в _Layout.cshtml для ссылки на другого родителя или добавить его в отдельное представление, чтобы ссылаться на другое представление макета.
У ScottGu есть сообщение с дополнительной информацией о Разметки бритвы
Я использую этот точный метод для того, о чем вы говорите, на некоторых сайтах электронной торговли, где вы находитесь в процессе проверки, я не хочу отвлекаться (навигация и т.д.) в представлении, поэтому вместо наличия специального случая if checkout
в макете, я делаю LayoutBrandingOnly
и Layout
, которые "наследуют" от него, поэтому мне не нужно повторять весь брендинг html.
Ответ 3
Вы можете легко решить эту проблему на одной странице макета, используя разделы. проверьте http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx