简体   繁体   中英

How to access user control properties from page?

I am having problem in accessing user control properties from page. I have usercontrol on master page with some properties,but i am unable to access them from the codebehind of the page which uses that master page.i want to set some properties of usercontrol on page load.Can anyone suggest how can i access them from page.

EG

User Control

ucTabSystem.ascx has following properties:

 public string TabName
    {
        get { return _tabName; }
        set { _tabName = value; }
    }
 public string TabUrl
    {
        get { return _tabUrl; }
        set { _tabUrl = value; }
    }

Master Page

InHouseTPAMaster.master has this user control in it.

ClaimHomePage.aspx

Uses Master page InHouseTPAMaster.master and i want to set usercontrol properties in page load of this page.

You can try this way to set your properties...

<%@ Register TagPrefix="Tab" TagName="sys" Src="ucTabSystem.ascx" %>

<tab:sys id="mysys" runat="server" TabName="xxxxx"    TabUrl = "yyyy"  />

You can use two methods. The first is by using Page.Master.FindControl('controlID'). Then you can cast it to the type of your user control. The second method is by adding a <%@ MasterType VirtualPath="" TypeName=""%> tag to your aspx page. In the VirtualPath add the virtual path to the master page, and the class in the TypeName. You can then access everything with intellisense

You need to define a public interface with two properties - TabName and TabUrl in separate code file.

public interface  IUserControl
{
    string TabName{get;set;}
    string TabUrl {get;set;}
}

Implements the IUserControl interface to UserControl class. For instance, I've MyUserControl and its code-behind is:

public partial class MyUserControl : System.Web.UI.UserControl , IUserControl 
{
    public string TabName
    {
        get { return ViewState["TabName"] == null ? string.Empty : ViewState["TabName"].ToString(); }
        set { ViewState["TabName"]= value; }
    }
    public string TabUrl
    {
        get { return ViewState["TabUrl"] == null ? string.Empty : ViewState["TabUrl"].ToString(); }
        set { ViewState["TabUrl"] = value; }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

Register MyUserControl in MasterPage and it has following markup in it.(master page)

 <%@ Register src="MyUserControl.ascx" tagname="MyUserControl" tagprefix="uc1" %>
 ......
 <uc1:MyUserControl ID="MyUserControl1" runat="server" />

In Page_Load event (or any other) handler of aspx page (Which is a content page of said master page).

protected void Page_Load(object sender, EventArgs e)
    {
        IUserControl control = Master.FindControl("MyUserControl1") as IUserControl;
        control.TabName = "Something";
        control.TabUrl = "http://www.example.com";
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM