我在母版页中有以下内容:
<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'
答案 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.designer
在this.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。在页面的实例方法中运行此代码。