我有一个像这样结构的PAGE:
PAGE = MASTER PAGE A + nested MASTER PAGE B of A
MASTER PAGE A:
-----------
Header
-----------
BODY
-----------
Footer
-----------
MASTER PAGE B:
BODY-------------------------------
| | |
ColumLeft | Content | ColumRight |
| | |
-----------------------------------
我需要开发的一个功能是能够以编程方式更改嵌套的MASTER PAGE。 例如,用C(包含不同的布局,如2列)更改MASTER PAGE B,使页眉和页脚保持集中。
目前在PAGE上,我使用此代码选择另一个MP,但我无法做到,因为在选择新的嵌套页面时,asp.net会松开对主MASTER PAGE A的引用。
void Page_PreInit(Object sender, EventArgs e)
{
this.MasterPageFile = "~/NewMaster.master";
}
问题:
答案 0 :(得分:0)
在这种情况下,我不会使用嵌套的主页,而只使用一个母版页。对于列,我将使用RenderPartial或RenderAction。它不像你想要的那样干,因为你需要在每个视图中添加RenderPartial(“LeftColumn”),所以我理解你的问题,但这就是我的方式。
注意:RenderAction在MVC中是可用的。有关它的文章,请参见: http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
答案 1 :(得分:0)
为了以编程方式更改MasterPage,您必须在xml / html页面中的页面注册链接之后立即指定其类型。
<%@ Page Language="C#"
MasterPageFile="~/MasterPage.master"
AutoEventWireup="false"
CodeFile="MyCodeFile.aspx.cs"
Inherits="MyCodeFile"
title="Untitled Page" %>
<%@ MasterType
virtualpath="~/MasterPage.master"
%>
我不建议使用此架构来实现您想要实现的目标,但这就是您要做的。