在 Repeater 中设置 HtmlButton 的属性会抛出 NullReferenceException
Setting attribute for HtmlButton in Repeater throws NullReferenceException
我在 Repeater 控件的 ItemDataBound 事件中有以下代码:
HtmlButton btnLike = (HtmlButton)e.Item.FindControl("LikeButton");
var itemLiked = new LikesService().GetByPostIdUserId(pollQ.PostId, new Guid(Membership.GetUser(this.Context.User.Identity.Name).ProviderUserKey.ToString()));
if (itemLiked != null)
btnLike.Attributes["class"] = "btn btn-primary btn-sm";
我调试了代码,但找不到此行抛出 NullReferenceException 的原因:
btnLike.Attributes["class"] = "btn btn-primary btn-sm";
我在调试器中验证对象 itemLiked
不为空。
这是转发器中 HTML 按钮的标记:
<button type="button" id="LikeButton" value='<%#Eval("PollQuestionID") %>' class='<%#GetCSS(Eval("PollQuestionID")) %>'>
<span class="glyphicon glyphicon-thumbs-up"></span> <%#LikeText(Eval("PollQuestionID")) %>
</button>
FindControl 方法只能找到 服务器控件 — 那些具有 runat="server"
属性的控件。将此属性添加到您的 <button>
:
<button runat="server" type="button" id="LikeButton" ...
我在 Repeater 控件的 ItemDataBound 事件中有以下代码:
HtmlButton btnLike = (HtmlButton)e.Item.FindControl("LikeButton");
var itemLiked = new LikesService().GetByPostIdUserId(pollQ.PostId, new Guid(Membership.GetUser(this.Context.User.Identity.Name).ProviderUserKey.ToString()));
if (itemLiked != null)
btnLike.Attributes["class"] = "btn btn-primary btn-sm";
我调试了代码,但找不到此行抛出 NullReferenceException 的原因:
btnLike.Attributes["class"] = "btn btn-primary btn-sm";
我在调试器中验证对象 itemLiked
不为空。
这是转发器中 HTML 按钮的标记:
<button type="button" id="LikeButton" value='<%#Eval("PollQuestionID") %>' class='<%#GetCSS(Eval("PollQuestionID")) %>'>
<span class="glyphicon glyphicon-thumbs-up"></span> <%#LikeText(Eval("PollQuestionID")) %>
</button>
FindControl 方法只能找到 服务器控件 — 那些具有 runat="server"
属性的控件。将此属性添加到您的 <button>
:
<button runat="server" type="button" id="LikeButton" ...