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

C# 如何从页面访问用户控件属性?,c#,asp.net,C#,Asp.net,我在从页面访问用户控件属性时遇到问题。 我在母版页上有一些属性的usercontrol,但我无法从使用该母版页的页面的代码隐藏处访问它们。我想在页面加载时设置usercontrol的一些属性。有人能建议我如何从页面访问它们吗 例如 用户控制 ucTabSystem.ascx具有以下属性: public string TabName { get { return _tabName; } set { _tabName = value; } } pu

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

例如

用户控制

ucTabSystem.ascx
具有以下属性:

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

InHouseTPAMaster.master
中包含此用户控件

ClaimHomePage.aspx


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

您可以尝试用这种方法设置属性

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

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

您可以尝试用这种方法设置属性

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

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

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

您需要在单独的代码文件中定义一个具有两个属性的公共接口—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)
    {

    }
}
在母版页中注册
MyUserControl
,它有以下标记。(母版页)


您需要在单独的代码文件中定义一个具有两个属性的公共接口——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)
    {

    }
}
在母版页中注册
MyUserControl
,它有以下标记。(母版页)


感谢回复…当用户控件直接放置在页面上时,您的代码将正常工作,但我的用户控件已经在母版页上注册,并且正在多个页面中使用,我想在使用该母版页的每个页面上设置用户控件的属性…好的,我明白了。您可以在页面加载事件中尝试此操作。。。((ucTabSystem)Page.Master.FindControl(“ucTabSystem”)).TabName=“xxxx”;找不到吗?或者,Page.Master.FindControl(“内容占位符1”).FindControl(“ucTabSystem”)?感谢您的努力..但我使用Virtualpath不知怎的成功了。感谢老兄,我感谢您的帮助..:)感谢您的回复..当usercontrol直接放置在页面上时,您的代码将正常工作,但我的用户控件已在母版页上注册,并在多个页面中使用,我想在使用母版页的每个页面上设置用户控件的属性…好的,我明白了。您可以在页面加载事件中尝试此操作。。。((ucTabSystem)Page.Master.FindControl(“ucTabSystem”)).TabName=“xxxx”;找不到吗?或者,Page.Master.FindControl(“内容占位符1”).FindControl(“ucTabSystem”)?谢谢你的努力..但我还是用Virtualpath成功了.谢谢老兄,我很感谢你的帮助..:)谢谢你的回复..我用虚拟路径成功了,但很乏味..我在母版页中创建了相同的属性,这些属性反过来调用usercontrol的属性..并在页面中使用Virtualpath(使用母版),我现在正在页面中设置母版页属性…感谢您的帮助…:)感谢您的回复…我使用虚拟路径进行了工作,但方式非常繁琐…我在母版页中创建了相同的属性,这些属性反过来调用usercontrol的属性…并在页面中使用virtualpath(使用母版),我现在正在页面中设置母版页属性…谢谢您的帮助…:)谢谢您的回复…我以前在没有帮助的情况下尝试过从页面查找控件的相同方法…但我使用虚拟路径使其工作…通过虚拟路径,我能够获得智能并使其工作…无论如何,谢谢您的帮助…)谢谢您的回复…我也尝试过同样的方法以前在没有帮助的情况下从页面查找控件的方法…但我使用虚拟路径使其工作…通过虚拟路径,我能够获得智能并使其工作…无论如何,感谢您的帮助:)