是否可以从内容页面访问母版页的元素?
假设我有继承MasterPage1的MasterPage1和ContentPage1,MasterPage1有一个按钮:Button1。
我可以从内容页面更改该按钮的属性,例如使Button1不可见,不活动等吗?我怎么能做到这一点?
我正在使用.net2.0
答案 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 => ""