如何从页面访问用户控件属性?

时间:2012-01-04 03:49:05

标签: c# asp.net

我在从页面访问用户控件属性时遇到问题。 我在主页面上有一些属性的usercontrol,但是我无法从使用该主页面的页面的代码隐藏中访问它们。我想在页面加载时设置usercontrol的一些属性。任何人都建议如何从主页面访问它们页。

E.G。

用户控制

ucTabSystem.ascx具有以下属性:

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

母版页

InHouseTPAMaster.master中包含此用户控件。

ClaimHomePage.aspx

使用母版页InHouseTPAMaster.master,我想在此页面的页面加载中设置usercontrol属性。

3 个答案:

答案 0 :(得分:1)

您可以尝试这种方式设置属性......

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

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

答案 1 :(得分:1)

您可以使用两种方法。 第一种是使用Page.Master.FindControl('controlID')。然后,您可以将其强制转换为用户控件的类型。第二种方法是添加&lt;%@ MasterType VirtualPath =“”TypeName =“”%&gt;标记到您的aspx页面。在VirtualPath中,将虚拟路径添加到母版页,并将类添加到TypeName中。然后,您可以使用intellisense访问所有内容

答案 2 :(得分:1)

您需要在单独的代码文件中定义具有两个属性的公共接口 - TabName和TabUrl。

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

实现UserControl类的IUserControl接口。例如,我MyUserControl及其代码隐藏是:

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)
    {

    }
}

在MasterPage中注册MyUserControl,其中包含以下标记。(母版页)

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

在aspx页面的Page_Load事件(或任何其他)处理程序中(这是所述母版页的内容页面)。

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