在我正在进行的项目中,母版页代码隐藏会执行大量复杂的检查和确认,以确定页面的TreeView上显示的导航列表。现在,我需要一种方法从另一个前端页面访问此列表,例如“frontpage.aspx”。
这有两个目的。其一,母版页将隐藏用户无法访问的导航列表中的页面,但用户仍然可以通过手动在URL中键入页面名称来进入页面。通过浏览TreeView,我可以通过简单地检查当前使用的TreeView中是否存在页面名称,将整个授权隔离到单个方法中。
二,这将允许我轻松更改任何页面的显示内容,而无需检查数据库或存储当前用户具有的任何特定权限的会话,因为我可以查看TreeView是否包含“Products Admin”,例如,然后使用它来隐藏或显示与“产品管理”功能有关的页面部分。
那么,有关如何做到这一点的任何提示,或者甚至是否可能?
答案 0 :(得分:2)
假设frontpage.aspx是一个内容页面,您绝对可以从中访问母版页。
例如,此代码将找到母版页上的TextBox和Label控件。您应该能够调整它以找到您的TreeView:
// Gets a reference to a TextBox control inside a ContentPlaceHolder
ContentPlaceHolder mpContentPlaceHolder;
TextBox mpTextBox;
mpContentPlaceHolder =
(ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if(mpContentPlaceHolder != null)
{
mpTextBox = (TextBox) mpContentPlaceHolder.FindControl("TextBox1");
if(mpTextBox != null)
{
mpTextBox.Text = "TextBox found!";
}
}
// Gets a reference to a Label control that is not in a
// ContentPlaceHolder control
Label mpLabel = (Label) Master.FindControl("masterPageLabel");
if(mpLabel != null)
{
Label1.Text = "Master page label = " + mpLabel.Text;
}
有关详细信息,请参阅 - http://msdn.microsoft.com/en-us/library/c8y19k6h.aspx
答案 1 :(得分:0)
您应该可以通过Master属性访问它,即:
TreeView tv = Master.MyTreeViewControl;
或
TreeView tv = (TreeView)Master.FindControl("MyTreeViewControl");
MSDN上的This page提供了有关以编程方式使用母版页的更多信息。
答案 2 :(得分:0)
您可以从引用Page.Master的母版页访问任何公共函数,并将此属性强制转换为母版页;
((Styles_Master)Page.Master).IsMyProperty = "new value";