[英]Nested Master Pages change programmatically
我有一个具有这样结构的PAGE:
PAGE = MASTER PAGE A + nested MASTER PAGE B of A
主页面A:
-----------
Header
-----------
BODY
-----------
Footer
-----------
主页面B:
BODY-------------------------------
| | |
ColumLeft | Content | ColumRight |
| | |
-----------------------------------
我需要开发的功能之一是能够以编程方式更改嵌套的MASTER PAGE。 例如,用C更改MASTER PAGE B(包含不同的布局,如2列),以保持Header和Footer集中。
目前在PAGE上,我使用此代码来选择另一个MP,但是我无法做到这一点,因为似乎在选择新的嵌套页面asp.net时,它失去了对主MASTER PAGE A的引用。
void Page_PreInit(Object sender, EventArgs e)
{
this.MasterPageFile = "~/NewMaster.master";
}
问题:
在这种情况下,我不会使用嵌套的母版页,而只会使用一个母版页。 对于列,我将使用RenderPartial或RenderAction。 它不像您希望的那样干燥,因为您需要在每个视图中添加RenderPartial(“ LeftColumn”),因此我了解您的问题,但这就是我的方法。
注意:RenderAction在MVC中可用。 有关其的文章,请参见: http : //haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
为了以编程方式更改MasterPage,您必须在xml / html页面中的页面注册链接后立即指定其类型。
<%@ Page Language="C#"
MasterPageFile="~/MasterPage.master"
AutoEventWireup="false"
CodeFile="MyCodeFile.aspx.cs"
Inherits="MyCodeFile"
title="Untitled Page" %>
<%@ MasterType
virtualpath="~/MasterPage.master"
%>
我不建议使用此体系结构来实现您想要实现的目标,但这就是您将要做的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.