我在我的主页中有一个表示菜单的自定义控件,我们称它为CustomMenu。控制代码文件位于非特殊目录中。
我希望为使用该母版页的每个页面提供访问该控件的能力,并使用公共属性告诉该控件是否应呈现其自身。
我在控件上有一个公共属性来做这件事,我知道我可以通过引用Page.Master.FindControl(‘IdOfControlIwant’)来获得这个控件;
我遇到的问题是,我似乎不能让编译器识别控件类型,所以当我找到菜单控件时,我实际上不能使用它。让后台代码识别类型的唯一方法是在ascx文件中注册它,然后向页面添加至少一个控件,这是不可取的。
有什么想法?
发布于 2011-01-19 08:12:29
你必须结合雅各布和dzendras发布的内容。将MasterType指令添加到内容页面的aspx文件:
<%@ MasterType VirtualPath="~/your.master" %>并在母版页中创建一个属性:
public CustomMenu MyCustomMenu {get{ return myCustomMenu;}}其中myCustomeMenu是母版页中用户控件的ID。
现在,您应该能够从内容页面引用用户控件。因此,如果CustomMenu用户控件有一个名为SelectedItem的属性,您应该能够像这样访问它:
public void Page_Load(object o, EventArgs e)
{
Master.MyCustomMenu.SelectedItem = 1;
}发布于 2011-01-19 07:09:17
在页面中使用MasterType指令:
<%@ MasterType VirtualPath="~/your.master" %>这将强类型您的母版页引用,因此您应该能够添加可由页面访问的属性。
发布于 2011-01-19 07:10:04
为您的MasterPage类创建一个属性:
bool IsCustomMenuVisible {set{ CustomMenu.Visible = value;}}在任何你喜欢的地方使用它。
https://stackoverflow.com/questions/4730059
复制相似问题