ASP.Net - 如何从常规页面访问masterpage对象?

时间:2010-07-20 11:15:12

标签: asp.net treeview master-pages

在我正在进行的项目中,母版页代码隐藏会执行大量复杂的检查和确认,以确定页面的TreeView上显示的导航列表。现在,我需要一种方法从另一个前端页面访问此列表,例如“frontpage.aspx”。

这有两个目的。其一,母版页将隐藏用户无法访问的导航列表中的页面,但用户仍然可以通过手动在URL中键入页面名称来进入页面。通过浏览TreeView,我可以通过简单地检查当前使用的TreeView中是否存在页面名称,将整个授权隔离到单个方法中。

二,这将允许我轻松更改任何页面的显示内容,而无需检查数据库或存储当前用户具有的任何特定权限的会话,因为我可以查看TreeView是否包含“Products Admin”,例如,然后使用它来隐藏或显示与“产品管理”功能有关的页面部分。

那么,有关如何做到这一点的任何提示,或者甚至是否可能?

3 个答案:

答案 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";