I have got the following contents in Master Page:
<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>
I have a class called data_class.cs
and i have created the following method in this class to disable controls on the Master Page:
public static void disablecontrol()
{
Master.FindControl("link1").Visible = false;
Master.FindControl("Link3").Visible = false;
}
I am getting the following error on Using "Master" word.
an object reference is Required for non-staticfield, method, property 'System.Web.UI.MasterPage.master.get'
Try this :
var pageHandler = HttpContext.Current.CurrentHandler;
if (pageHandler is System.Web.UI.Page)
{
((System.Web.UI.Page)pageHandler).Master.FindControl("...").Visible=false;
}
In your aspx
file add the following directive:
<%@ MasterType TypeName="YorNamespace.YourMasterClass" %>
Create a method exposing your method in the MasterPage
:
public void disablecontrol()
{
Master.Link1.Visible = false;
Master.Link3.Visible = false;
}
And in your aspx.cs
file you can simple:
this.Master.disablecontrol();
Edit: It will change your aspx.designer
file making the cast for you in the this.Master
property as following:
/// <summary>
/// Master property.
/// </summary>
/// <remarks>
/// Auto-generated property.
/// </remarks>
public new YorNamespace.YourMasterClass Master {
get {
return ((YorNamespace.YourMasterClass)(base.Master));
}
}
More about MasterType.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With