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

时间:2009-07-02 00:06:33

标签: asp.net master-pages roles

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

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

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

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

5 个答案:

答案 0 :(得分:24)

答案 1 :(得分:14)

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

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

答案 2 :(得分: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*/ };
    }
}

答案 3 :(得分: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”,否则它将无法编译。

答案 4 :(得分:0)

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