我有一个旧的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引擎转换并使用它?
答案 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";
}