2014-01-16 92 views
4

我有在母版页以下内容:访问母版页在C#

<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,我已经创造了在这一类下面的方法对主禁用控制Page:

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'

回答

12

试试这个:

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

工作完美谢谢sooo多。 – user3202862

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