【问题标题】:access Master page in class file in C#在 C# 中的类文件中访问母版页
【发布时间】:2014-01-16 14:29:11
【问题描述】:

我在母版页中有以下内容:

<ul>
    <li id="link1" runat="server"><a href="mytestfile.aspx">Test Files</a></li>
    <li id="link2" runat="server"><a href="mylistitemtest.aspx">List Item Test</a></li>
    <li id="link3" runat="server"><a href="Mytest2.aspx">Some Test</a></li>    
</ul> 

我有一个名为data_class.cs 的类,我在该类中创建了以下方法来禁用母版页上的控件:

public static void disablecontrol()
{
    Master.FindControl("link1").Visible = false;
    Master.FindControl("Link3").Visible = false;
}

我在使用“主”字时收到以下错误。

an object reference is Required for non-staticfield, method, property 'System.Web.UI.MasterPage.master.get'

【问题讨论】:

    标签: c# asp.net class master-pages


    【解决方案1】:

    试试这个:

    var pageHandler = HttpContext.Current.CurrentHandler;
    if (pageHandler  is  System.Web.UI.Page)
    {
      ((System.Web.UI.Page)pageHandler).Master.FindControl("...").Visible=false;
    }
    

    【讨论】:

    • 工作完美,非常感谢。
    【解决方案2】:

    在您的 aspx 文件中添加以下指令:

    <%@ MasterType TypeName="YorNamespace.YourMasterClass" %>
    

    创建一个在MasterPage 中公开您的方法的方法:

    public void disablecontrol()
    {
        Master.Link1.Visible = false;
        Master.Link3.Visible = false;
    }
    

    在您的aspx.cs 文件中,您可以很简单:

    this.Master.disablecontrol();
    

    编辑:它将更改您的 aspx.designer 文件,从而在 this.Master 属性中为您制作演员表,如下所示:

    /// <summary>
    /// Master property.
    /// </summary>
    /// <remarks>
    /// Auto-generated property.
    /// </remarks>
    public new YorNamespace.YourMasterClass Master {
        get {
            return ((YorNamespace.YourMasterClass)(base.Master));
        }
    }
    

    更多关于MasterType

    【讨论】:

      【解决方案3】:

      因为这个方法是静态的,所以它不能访问properties of the page object。在页面的实例方法中运行此代码。

      【讨论】:

        猜你喜欢
        • 2017-06-13
        • 1970-01-01
        • 2016-02-27
        • 1970-01-01
        • 2014-09-20
        • 2020-10-17
        • 1970-01-01
        • 2010-11-06
        • 2019-02-24
        相关资源
        最近更新 更多