内容页面是否可以访问主页面的元素?
假设我有MasterPage1和ContentPage1,ContentPage1继承自MasterPage1,而MasterPage1有一个按钮:Button1。
我能否从内容页更改该按钮的属性,例如将Button1设置为不可见、不活动等?如何实现这一点?
我正在使用.net2.0。
内容页面是否可以访问主页面的元素?
假设我有MasterPage1和ContentPage1,ContentPage1继承自MasterPage1,而MasterPage1有一个按钮:Button1。
我能否从内容页更改该按钮的属性,例如将Button1设置为不可见、不活动等?如何实现这一点?
我正在使用.net2.0。
是的...如果你需要在使用MasterPage的aspx页面中这样做,那么应该是:
Button myButton = (Button)Master.FindControl("myButton");
myButton.Visible = false;
您需要在页面/用户控件标记中引用MasterPage。
<%@ Reference VirtualPath="..." %>
然后在代码后台,你只需要将Page.MasterPage转换为你的MasterPage并访问其属性即可。
MyMasterPage myMasterPage = (MyMasterPage)Page.Master;
Master.FindControl("myButton").Visible = False
请注意,运行上述命令的控件不应该位于Update Panel中。
注:该命令为it技术相关内容。是的,它们可以,而且有几种方法可以实现。
我使用的方法是在母版页中创建公共方法,用于修改/访问母版页中的数据。例如,我通常喜欢修改当前页面/类别的链接样式,因此我的母版页中有一个类似于下面这样的方法:
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属性来显示/隐藏它们时,我遇到了一些问题。这是由于主页面和内容页面的呈现顺序所致。为了解决这个问题,我为可见和隐藏设置了基本的CSS样式,并相应地设置了CssClass属性。
Control cph = this.Master.FindControl("ContentTopPortion");
Label mpLabel = (Label)cph.FindControl("lblMstrMessage");