ASP.NET - 从内容页面访问主页面元素

时间:2009-01-20 16:02:44

标签: .net asp.net master-pages

是否可以从内容页面访问母版页的元素?

假设我有继承MasterPage1的MasterPage1和ContentPage1,MasterPage1有一个按钮:Button1。

我可以从内容页面更改该按钮的属性,例如使Button1不可见,不活动等吗?我怎么能做到这一点?

我正在使用.net2.0

5 个答案:

答案 0 :(得分:11)

是的...如果您需要使用MasterPage从aspx页面执行此操作,那将是:

Button myButton = (Button)Master.FindControl("myButton");
myButton.Visible = false;

答案 1 :(得分:9)

您必须在页面/用户控制标记中添加对MasterPage的引用。

<%@ Reference VirtualPath="..." %>

然后在代码隐藏中,您只需将Page.MasterPage转换为MasterPage并访问其属性。

MyMasterPage myMasterPage = (MyMasterPage)Page.Master;

答案 2 :(得分:4)

Master.FindControl(“myButton”)。Visible = False

请注意,用于运行上述命令的控件不应位于“更新”面板中。

答案 3 :(得分:3)

是的,他们可以,并且有一些方法。

我使用的方法是在母版页中创建公共方法,以便修改/访问母版页中的数据。例如,我通常喜欢修改我当前页面/类别的链接样式,所以我的主页中有一个方法如下:

   Public Sub SetNavigationPage(ByVal MenuName As String)

      DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent"

   End Sub

然后在我的内容页面中,我只是这样访问此方法:

Dim myMaster As EAF = DirectCast(Me.Master, EAF)
myMaster.SetNavigationPage("hypViewEmployee")

...其中EAF是我母版页的类名。

我发现一个有趣的问题是,在尝试以这种方式显示/隐藏它们时,我使用了.NET控件的Visibility属性。这是由于主页和内容页面的渲染。为了解决这个问题,我为visible和hidden设置了一个基本的CSS样式,并相应地设置了CssClass属性。

答案 4 :(得分:0)

我遇到了一个问题,我无法确定控件,除非我在 ContentPlaceHolder 中查找它。在这种情况下是一个标签(Label.ID = "lblMstrMessage")。 我的代码如下(其中 ContentPlaceHolder.ID = "ContentTopPortion")

resources :agents, :path => ""