Set Property Value on Master Page from Content Page

后端 未结 5 1234
广开言路
广开言路 2020-12-31 14:13

I need to pass data to a variable in my master page each time a page is loaded.

I have a string[] of RequiredRoles that I set on each content page defining what role

相关标签:
5条回答
  • 2020-12-31 14:49

    Typecast Page.Master to your master page so that you are doing something like:

    ((MyMasterPageType)Page.Master).Roles = "blah blah";
    
    0 讨论(0)
  • 2020-12-31 14:50

    Add page directive to your child page:

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

    Then add property to your master page:

    public string Section { get; set; }
    

    You can access this property like this:

    Master.Section = "blog";
    
    0 讨论(0)
  • 2020-12-31 14:56

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

    0 讨论(0)
  • 2020-12-31 15:01

    I'd go by creating a base class for all the content pages, something like:

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

    And then I make every page inherits from BasePage, and each defining a RequiredRoles

    public partial class _Default : BasePage
    {
        protected override string[] RequiredRoles
        {
            get { return new[] { "Admin", "Moderator" }; }
        }
    }
    

    This has the advantage of cleanliness and DRY-ing the OnLoad handler code. And every page which inherits from BasePage are required to define a "RequiredRoles" or else it won't compile.

    0 讨论(0)
  • 2020-12-31 15:03

    Create a property in your master page and you access it from content page:

    Master page:

    public partial class BasePage : System.Web.UI.MasterPage
    {
        private string[] _RequiredRoles = null;
    
        public string[] RequiredRoles
        {
            get { return _RequiredRoles; }
            set { _RequiredRoles = value; }
        }
    }
    

    Content Page:

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load()
        {
            Master.RequiredRoles = new string[] { /*set appropriate roles*/ };
        }
    }
    
    0 讨论(0)
提交回复
热议问题