在内容页面的主页面上设置属性值

问题描述 投票:8回答:5

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

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

在我的母版页上,我有一个获取此数组的方法,并检查当前用户是否在一个或多个角色中。

我该怎么做呢?我基本上希望每个页面都定义了一个String [] RequiredRoles,并且主页面将在每次调用时加载它并检查用户是否在这些角色中。

asp.net master-pages roles
5个回答
10
投票

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

母版页:

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*/ };
    }
}

24
投票

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

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

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

public string Section { get; set; }

您可以像这样访问此属性:

Master.Section = "blog";

14
投票

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

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

6
投票

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

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”,否则它将无法编译。


0
投票

CType(Master.FindControl(“lblName”),Label).Text = txtId.Text CType(Master.FindControl(“pnlLoginned”),Panel).Visible = True

© www.soinside.com 2019 - 2024. All rights reserved.