访问C#中类文件中的母版页

时间:2014-01-16 14:29:12

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

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

<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;
}

使用“Master”字时出现以下错误。

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

3 个答案:

答案 0 :(得分:12)

试试这个:

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

答案 1 :(得分:2)

aspx文件中添加以下指令:

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

创建一个方法,在MasterPage

中公开您的方法
public void disablecontrol()
{
    Master.Link1.Visible = false;
    Master.Link3.Visible = false;
}

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

this.Master.disablecontrol();

修改:它会更改aspx.designerthis.Master属性中为您制作演员的文件,如下所示:

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

有关MasterType的更多信息。

答案 2 :(得分:1)

由于此方法是静态的,因此无法访问properties of the page object。在页面的实例方法中运行此代码。