我的母版页面中有一个代表菜单的自定义控件,我们称之为CustomMenu。控制代码文件位于非特殊目录中。
我想让使用该母版页的每个页面都能够访问该控件,并使用公共属性告诉控件是否应该呈现自己。
我在控件上有一个公共属性来做这件事,我知道我可以通过引用Page.Master.FindControl('IdOfControlIwant')来获得控件;
我遇到的问题是我似乎无法获得编译器识别的控件类型,所以当我找到菜单控件时,我实际上无法使用它。我能够识别类型的唯一方法是将其注册到ascx文件中,然后向页面添加至少一个控件,这是不可取的。
思想?
答案 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;}}
随时随地使用它。