ASP.net简单的设计问题

时间:2011-04-26 00:37:35

标签: c# jquery asp.net dom

我在转发器中有这个:

<div class="vote-wrapper">
    <asp:hyperlink runat="server" CssClass="s dislike-button" ID="CommentVoteDown" />                        
    <div class="vote-total-bad">
        23
    </div>
    <asp:hyperlink runat="server" CssClass="s like-button" ID="CommentVoteUp" />
    <div class="clear"></div>
</div>

这是重复的(显然!)。由于我的项目设置,我没有生成任何唯一的ID,并且自己管理它,原因是它使得在外部JS文件中调用DOM元素的引用变得更加容易。

ID是重复的,都是CommentVoteDownCommentVoteUp。我想做的是将它们理解为:

CommentVoteUp124
CommentVoteDown124

后面的数字代表与之关联的评论的ID。

我尝试着:

 UV.Attributes["ID"] += ThisComment.ID;

UV.Attributes.Add("ID", "CommentVoteUp" + ThisComment.ID);

但这些只是为HTML元素添加了第二个键。我如何命名它们以便我可以在Jquery中引用它们?

3 个答案:

答案 0 :(得分:2)

这不会起作用吗?

UV.ID += ThisComment.ID;

除非您正在进行回发,否则您不必使用asp.net服务器控件,并且使用干净简单的html可能会更好:

<% Comment comment = Container.DataItem as Comment %>
<div class="vote-wrapper">
    <a class="s dislike-button" ID="CommentVoteDown<%=comment.ID %>" />                        
    <div class="vote-total-bad">
        23
    </div>
    <a class="s like-button" ID="CommentVoteUp<%=comment.ID %>" />                        
    <div class="clear"></div>
</div>

只使用类并使用jQuery

从包装容器中找到id
<% Comment comment = Container.DataItem as Comment %>
<div id="CommentVoteUp<%=comment.ID %>" class="vote-wrapper">
    <a class="s dislike-button" />                        
    <div class="vote-total-bad">
        23
    </div>
    <a class="s like-button" />                        
    <div class="clear"></div>
</div>

然后使用jQuery,您可以使用以下内容从投票上/下<a>标记的范围中找到ID:

$(".like-button").click(function(){
    var id = $(this).closest(".vote-wrapper").attr("id");
});

$(".dislike-button").click(function(){
    var id = $(this).closest(".vote-wrapper").attr("id");
});

答案 1 :(得分:2)

你不能做像

这样的事情
<asp:hyperlink runat="server" CssClass="s dislike-button" 
                ID='<%# "CommentVoteDown" + Eval("ID") %>' />    

答案 2 :(得分:1)

您可以尝试将其添加到元素的cssclass中吗?这可能会使它变得容易多了。

CommentVoteUp.Attributes [“class”] =“[在此处添加您的班级名称]”;