Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 从内容页在母版页上设置属性值_Asp.net_Master Pages_Roles - Fatal编程技术网

Asp.net 从内容页在母版页上设置属性值

Asp.net 从内容页在母版页上设置属性值,asp.net,master-pages,roles,Asp.net,Master Pages,Roles,每次加载页面时,我都需要将数据传递给母版页中的变量 我在每个内容页面上设置了一个RequiredRoles字符串[],定义访问该页面所需的角色 在我的母版页上,我有一个方法接受这个数组,并检查当前用户是否在其中一个或多个角色中 我该如何处理这件事?我基本上希望每个页面都定义一个字符串[]RequiredRoles,母版页将在每次调用时加载该字符串,并检查用户是否处于这些角色中。类型转换页面。母版页将添加到母版页,以便执行以下操作: ((MyMasterPageType)Page.Master).

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

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

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


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

类型转换页面。母版页将添加到母版页,以便执行以下操作:

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

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

母版页:

public partial class BasePage : System.Web.UI.MasterPage
{
    private string[] _RequiredRoles = null;

    public string[] RequiredRoles
    {
        get { return _RequiredRoles; }
        set { _RequiredRoles = value; }
    }
}
public string Section { get; set; }
内容页:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load()
    {
        Master.RequiredRoles = new string[] { /*set appropriate roles*/ };
    }
}

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

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" }; }
    }
}

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

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

<%@ MasterType VirtualPath="~/MasterPage.master" %>
您可以通过以下方式访问此属性:

Master.Section = "blog";
CType(Master.FindControl(“lblName”),Label.Text=txtId.Text
CType(Master.FindControl(“pnllogined”),Panel.Visible=True

这一个还没有足够的升级。这是处理需求的正确方法,即使它与OP试图解决的确切问题不同。什么是MyMasterPageType?@Niloofar:创建母版页时,它会创建一个新类。在我的示例中,您将用实际母版页类的名称替换
MyMasterPageType
。将此答案投票给其他答案,因为它显示了指令的使用,这使内容页的工作效果更好,尤其是Visual Studio中的intellisense。