2011-01-18 32 views
0

我在我的母版頁中有一個代表菜單的自定義控件,我們稱它爲CustomMenu。控制代碼文件位於非特殊目錄中。如何獲取代碼隱藏文件來識別用戶控件的類型?

我想給每個使用該母版頁的頁面訪問控件的能力,並使用公共屬性告訴控件是否應該呈現它自己。

我有一個控件的公共屬性來做到這一點,我知道我可以通過引用Page.Master.FindControl('IdOfControlIwant');

我遇到的問題是,我似乎無法獲得編譯器識別的控件類型,所以當我找到菜單控件時,我實際上無法使用它。唯一可以讓代碼識別類型的方法是將其註冊到ascx文件中,然後將至少一個控件添加到頁面中,這是不可取的。

想法?

回答

1

你必須結合Jacob和dzendras發佈的內容。中的MasterType指令添加到您的內容頁面的aspx文件:

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

而在母版頁創建一個屬性:

public CustomMenu MyCustomMenu {get{ return myCustomMenu;}} 

哪裏myCustomeMenu是用戶控件的母版的標識。

您現在應該能夠從內容頁面引用usercontrol。因此,如果CustomMenu用戶控件具有名爲SelectedItem的屬性,則應該可以像這樣訪問它:

public void Page_Load(object o, EventArgs e) 
    { 
     Master.MyCustomMenu.SelectedItem = 1; 
    } 
+0

Jacob確實提到了屬性,但此答案更容易消化。有趣的是,這確實解決了我的問題,這很棒,但是仍然讓我想知道當控件不在您與之交互的頁面上時是否有直接與用戶控件交互的方式。 – Alkix 2011-01-19 21:45:57

1

使用在您的網頁上MasterType指令:

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

這將有力地鍵入您的母版頁引用,所以你應該能夠添加可通過網頁訪問的屬性。

0

讓你的母版類的屬性:

bool IsCustomMenuVisible {set{ CustomMenu.Visible = value;}} 

而且你喜歡的地方使用它。

相關問題