I have a master page, with these lines in the on load event:
string menuIDdata = Page.Request.QueryString["mid"];
menuID = 0;
// Get the menu ID
if (!int.TryParse(menuIDdata, out menuID))
{
menuID = 0;
}
// Select the correct menu
var selectedMenu = this.Page.FindControl("mnu" + menuID) as Panel;
selectedMenu.CssClass = "navButtonO";
The var is set fine, but the CSS class line crashes with the error:
Exception Details:
System.NullReferenceException: Object
reference not set to an instance of an
object.
The master page has these elements on it:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="AdminMaster.master.cs" Inherits="MySite.MasterPages.AdminMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="mainHead" runat="server" >
<title>Administration</title>
<link rel="Stylesheet" href="../style/admin.css" />
</head>
<body>
<form id="mainForm" runat="server">
<div class="topMenu">
<asp:Panel id="mnu0" runat="server" CssClass="navButton">
<a href="admin.aspx?mid=0" class="navLink">Admin Home</a>
</asp:Panel>
<asp:Panel id="mnu1" runat="server" CssClass="navButton">
<a href="admin.aspx?mid=1" class="navLink">User Manager</a>
</asp:Panel>
<asp:Panel id="mnu2" runat="server" CssClass="navButton">
<a href="admin.aspx?mid=2" class="navLink">Products</a>
</asp:Panel>
<asp:Panel id="mnu3" runat="server" CssClass="navButtonR">
<a href="../default.aspx" class="navLink">Back to Site</a>
</asp:Panel>
</div>
<br /><br />
<asp:Panel id="subLinks" runat="server" CssClass="subMenu"></asp:Panel>
<div class="mainContent">
<asp:contentplaceholder id="mainContent" runat="server" />
</div>
</form>
</body>
</html>
Any ideas? Thanks! I’m new to .net, this code worked fine when it was on it’s own page, I’ve moved it to a master page and I have narrowed the crash down to the line where it sets CSS class.
Edit
Commenting out the line:
selectedMenu.CssClass = "navButtonO";
And the whole thing works fine, so it appears just this line is failing.
The above line is either failing to find the control on the page that matches the ID you’re passing or it is failing to cast the control that is found to a Panel.
Set a breakpoint on that line and make sure that there is a Control on the Page that matches the ID you think should be there.