从内容页面设置母版页上的属性值

Posted

技术标签:

【中文标题】从内容页面设置母版页上的属性值【英文标题】:Set Property Value on Master Page from Content Page 【发布时间】:2010-11-07 12:00:00 【问题描述】:

每次加载页面时,我都需要将数据传递给母版页中的变量。

我在每个内容页面上设置了一个RequiredRoles 字符串[],定义了访问该页面所需的角色。

在我的母版页上,我有一个方法接受这个数组,并检查当前用户是否处于其中的一个或多个角色中。

我将如何管理这个?我基本上希望每个页面都定义一个 String[] RequiredRoles,并且母版页将在每次调用时加载它并检查用户是否处于这些角色中。

【问题讨论】:

【参考方案1】:

将页面指令添加到您的子页面:

<%@ MasterType VirtualPath="~/MasterPage.master" %>

然后将属性添加到您的母版页:

public string Section  get; set; 

你可以像这样访问这个属性:

Master.Section = "blog";

【讨论】:

投票赞成这个答案而不是其他答案,因为它显示了 指令的使用,这使得内容页面的工作变得更好 - 特别是 Visual Studio 中的智能感知。【参考方案2】:

Typecast Page.Master 到您的母版页,以便您执行以下操作:

((MyMasterPageType)Page.Master).Roles = "blah blah";

【讨论】:

什么是 MyMasterPageType? @Niloofar:创建母版页时,它会创建一个新类。在我的示例中,您将 MyMasterPageType 替换为您的实际母版页类的名称。【参考方案3】:

在母版页中创建一个属性,然后从内容页访问它:

母版页:

public partial class BasePage : System.Web.UI.MasterPage

    private string[] _RequiredRoles = null;

    public string[] RequiredRoles
    
        get  return _RequiredRoles; 
        set  _RequiredRoles = value; 
    

内容页面:

public partial class _Default : System.Web.UI.Page

    protected void Page_Load()
    
        Master.RequiredRoles = new string[]  /*set appropriate roles*/ ;
    

【讨论】:

【参考方案4】:

我会为所有内容页面创建一个基类,例如:

public abstract class BasePage : Page

    protected abstract string[] RequiredRoles  get; 

    protected override void OnLoad(EventArgs e)
    
        base.OnLoad(e);

        // display the required roles in a master page
        if (this.Master != null) 
            // value-assignment
        

    

然后我让每个页面都继承自BasePage,并且每个页面都定义一个RequiredRoles

public partial class _Default : BasePage

    protected override string[] RequiredRoles
    
        get  return new[]  "Admin", "Moderator" ; 
    

这具有清洁和干燥 OnLoad 处理程序代码的优点。并且从 BasePage 继承的每个页面都需要定义一个“RequiredRoles”,否则它将无法编译。

【讨论】:

这个没有得到足够的支持。这是处理需求的正确方法,即使它与 OP 试图解决的确切问题不同。【参考方案5】:

CType(Master.FindControl("lblName"), 标签).Text = txtId.Text CType(Master.FindControl("pnlLoginned"), Panel).Visible = True

【讨论】:

以上是关于从内容页面设置母版页上的属性值的主要内容,如果未能解决你的问题,请参考以下文章

从内容页面更新母版页图像

从内容页面访问母版页控件(html:输入)不起作用

带有母版页的 aspx 页面上的图像

Asp.net 如何取母版页的属性及控件及方法调用求解答

CSS 不在母版页上呈现

mvc 母版页问题 我在网前台用一个母版页 其他页面调用母版页都没有问题