代码之家  ›  专栏  ›  技术社区  ›  WedTM

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

  •  8
  • WedTM  · 技术社区  · 17 年前

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

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

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

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

    5 回复  |  直到 17 年前
        1
  •  25
  •   HasanG Joe Dabones    9 年前

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

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

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

    public string Section { get; set; }
    

    您可以通过以下方式访问此属性:

    Master.Section = "blog";
    
        2
  •  15
  •   Tim M.    10 年前

    ((MyMasterPageType)Page.Master).Roles = "blah blah";
    
        3
  •  10
  •   HasanG Joe Dabones    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*/ };
        }
    }
    
        4
  •  6
  •   chakrit Dutchie432    17 年前

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

        5
  •  0
  •   Hasan Zafari    8 年前

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