使用Razor的MVC Child Master页面

时间:2014-03-19 13:04:04

标签: asp.net .net asp.net-mvc asp.net-mvc-4 razor

我有一个旧的MVC2项目,我用Razor逐渐转换为MVC 5.

由于无法使用ASP Master Pages进行剃刀观看,我决定将Site.Master复制到_Layout.cshtml

一切都很好但是有一个问题。

我还有另一个母版页TwoColumnsLayout.Master,一个"孩子"母版页,就像这样开始:

<%@ Master MasterPageFile="~/Views/Shared/Site.Master" Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<asp:Content ContentPlaceHolderID="MetaContent" runat="server">
    <asp:ContentPlaceHolder ID="MetaContent" runat="server" />
</asp:Content>

<asp:Content ContentPlaceHolderID="HeadContent" runat="server">
    <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
</asp:Content>

<asp:Content ContentPlaceHolderID="MainContent" runat="server">
    <div class="breadcrumbs">
    ...

如何使用Razor引擎转换并使用它?

2 个答案:

答案 0 :(得分:2)

利用@{ Layout = ""; }功能。

例如:

<强>〜/查看/共享/ _LayoutMain.cshtml

<html>
<head>
    <link href="..." rel="stylesheet" type="text/css" />
</head>
<body>
    <!-- header markup -->
    @RenderBody()
    <!-- footer markup -->
</body>
</html>

<强>〜/查看/共享/ _LayoutChild.cshtml

@{
    Layout = "~/Views/Shared/_LayoutMain.cshtml";
}
<!-- Child Layout content -->
<div>
    @RenderBody()
</div>

<强>〜/查看/我的页面/ _SomeViewPage.cshtml

@{
    Layout = "~/Views/Shared/_LayoutChild.cshtml";
}

<div>
    @RenderBody()
</div>

答案 1 :(得分:0)

您只需要使用嵌套布局模板。

使用以下内容创建另一个布局_TwoColumnsLayout.cshtml

@{
    Layout = "~/Shared/_Layout.cshtml";
}

//Nested specific markup ...

@RenderBody()

然后在您的视图中指定新的嵌套模板,如下所示:

@{
    Layout = "~/Shared/_TwoColumnsLayout.cshtml.cshtml";
}