我有像这样的锚标签
<div id="menu_container">
<ul id="nav-bar">
<li><a href="Default.aspx" runat="server" id="menu_item_default">Home</a></li>
<li><a href="Account.aspx" runat="server" id="menu_item_account" >Account</a></li>
<li><a href="Servers.aspx" runat="server" id="menu_item_servers">Servers</a></li>
<li><a href="Statistics.aspx" runat="server" id="menu_item_statistics">Statistics</a></li>
<li><a href="Tutorials.aspx" runat="server" id="menu_item_tutorials">Tutorials</a></li>
<li><a href="Contact.aspx" runat="server" id="menu_item_contact">Contact us</a></li>
<div id="login_registration_container">
<a href="#" id="login">Sign in</a> / <a href="Registration.aspx" id="register">Register</a>
</div>
</ul>
</div>
我想以这种方式更改menu_item_default
的CSS类:
WebControl wc = (WebControl)FindControl("#menu_item_default");
wc.Attributes.Add("class", "value");
错误:null引用异常
如何做到这一点?
答案 0 :(得分:4)
你不应该在FindControl参数中使用'#'符号:
WebControl wc = (WebControl)FindControl("menu_item_default");
答案 1 :(得分:3)
使用MasterPage,该元素位于ContentPlaceholder中:
如果是这样,那么你必须首先检索ContentPlaceholder,然后从中检索你想要的元素。
如果您的网页包含以下内容区域,例如:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
然后你会做以下事情(省略错误处理):
var mainCtrl = Master.FindControl("MainContent");
var anchor = (HtmlAnchor) mainCtrl.FindControl("menu_item_default");
anchor.Attributes.Add("class", "value");
使用MasterPage,该元素位于MasterPage中:
使用:
var anchor = (HtmlAnchor) Master.FindControl("menu_item_default");
答案 2 :(得分:0)
您使用常规锚标签是否有特殊原因?为什么不使用ASP.Net LinkButton?这将使代码中的引用更容易。
如果控件位于母版页上,请尝试 Master.FindControl()