如何获得代码隐藏文件来识别用户控件的类型?

时间:2011-01-18 23:02:19

标签: asp.net user-controls

我的母版页面中有一个代表菜单的自定义控件,我们称之为CustomMenu。控制代码文件位于非特殊目录中。

我想让使用该母版页的每个页面都能够访问该控件,并使用公共属性告诉控件是否应该呈现自己。

我在控件上有一个公共属性来做这件事,我知道我可以通过引用Page.Master.FindControl('IdOfControlIwant')来获得控件;

我遇到的问题是我似乎无法获得编译器识别的控件类型,所以当我找到菜单控件时,我实际上无法使用它。我能够识别类型的唯一方法是将其注册到ascx文件中,然后向页面添加至少一个控件,这是不可取的。

思想?

3 个答案:

答案 0 :(得分:1)

在您的网页中使用MasterType指令:

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

这将强烈输入您的母版页参考,因此您应该能够添加页面可以访问的属性。

答案 1 :(得分:1)

你必须结合Jacob和dzendras发布的内容。将MasterType指令添加到内容页面的aspx文件中:

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

在母版页中创建一个属性:

public CustomMenu MyCustomMenu {get{ return myCustomMenu;}}

其中myCustomeMenu是主页中Usercontrol的ID。

您现在应该能够从内容页面引用用户控件。因此,如果CustomMenu用户控件具有名为SelectedItem的属性,您应该能够像这样访问它:

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

答案 2 :(得分:0)

创建MasterPage类的属性:

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

随时随地使用它。