マスターページからcssを継承するコンテンツページのcssを変更しようとしています。以下を試しましたが、何らかの理由で「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。
以下は私のcsコードです:
protected void Page_Load(object sender, EventArgs e)
{
HtmlGenericControl mycontrol = (HtmlGenericControl)this.Page.Master.FindControl("ul1").FindControl("li1") as HtmlGenericControl;
mycontrol.Attributes.Add("class", "newCSS");
}
ここでマスターページのコンテンツを見つけます:
<div id="menu">
<ul id="ul1" runat="server">
<li id="li1" runat="server">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl ="home.aspx">Home</asp:HyperLink></li>
<li id="li2" runat="server">
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl ="AboutUs.aspx">About Us</asp:HyperLink></li>
<li id="li3" runat="server">
<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="~/courses.aspx" >Courses</asp:HyperLink></li>
<li id="li4" runat="server">
<asp:HyperLink ID="HyperLink4" runat="server" NavigateUrl="~/News.aspx" >News</asp:HyperLink></li>
<li id="li5" runat="server">
<asp:HyperLink ID="HyperLink5" runat="server" NavigateUrl="ContactInfo.aspx" >Contact Us</asp:HyperLink></li>
</ul>
</div>
以下のCSS:
#menu a:hover
{
background-color: white;
color: #bee2f1;
}
.newCSS
{
background-color: black;
color: #fff;
}
上記のように、ul、liIdの代わりにハイパーリンクIDとして.FindControlIDを指定しようとしましたが、それも機能しませんでした。
編集:csページで次のことを試しました:
protected void Page_Load(object sender, EventArgs e)
{
HtmlGenericControl mycontrol = (HtmlGenericControl)Master.FindControl("ul1").FindControl("li1");
mycontrol.Attributes.Add("class", "newCSS");
}
コンパイラエラーはありませんが、コードは機能しません。