簡體   English   中英

如何從頁面訪問用戶控件屬性?

[英]How to access user control properties from page?

我在從頁面訪問用戶控件屬性時遇到問題。 我在母版頁上有一些屬性的用戶控件,但是我無法從使用該母版頁的頁面的代碼中訪問它們。我想在頁面加載時設置用戶控件的某些屬性。有人可以建議我如何從中訪問它們頁。

例如

用戶控制

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 ,我想在此頁的頁面加載中設置用戶控件屬性。

您可以嘗試通過這種方式設置屬性...

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

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

您可以使用兩種方法。 第一種是通過使用Page.Master.FindControl('controlID')。 然后,可以將其轉換為用戶控件的類型。 第二種方法是將<%@ MasterType VirtualPath =“” TypeName =“”%>標記添加到aspx頁面。 在VirtualPath中,將虛擬路徑添加到母版頁,並在TypeName中添加類。 然后,您可以使用智能感知來訪問所有內容

您需要在單獨的代碼文件中定義具有兩個屬性的公共接口-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";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM