【问题标题】:ASP.NET - Accessing Master Page elements form the Content PageASP.NET - 从内容页面访问母版页元素
【发布时间】:2009-01-20 16:02:43
【问题描述】:

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

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

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

我正在使用 .net2.0

【问题讨论】:

    标签: .net asp.net master-pages


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      MyMasterPage myMasterPage = (MyMasterPage)Page.Master;
      

      【讨论】:

        【解决方案3】:

        Master.FindControl("myButton").Visible = False

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

        【讨论】:

          【解决方案4】:

          是的,他们可以,并且有几种方法可以解决这个问题。

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

             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 属性。

          【讨论】:

          • +1。感谢您提供有关更改 CssClass 的提示 - 我发现它也非常方便。不知何故,我忘了在提出问题的那天发表评论
          【解决方案5】:

          我遇到了无法确定控件的问题,除非我在 ContentPlaceHolder 中查找它。在本例中为标签 (Label.ID = "lblMstrMessage")。 我的代码如下(其中 ContentPlaceHolder.ID = "ContentTopPortion")

            Control cph = this.Master.FindControl("ContentTopPortion");
            Label mpLabel = (Label)cph.FindControl("lblMstrMessage");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多