我在 SO 上看到很多资源说我可以使用以下语法将值传递给“LinkButton”的 CommandArguement
<%forearch(var comment in Comments){%>
<asp:LinkButton ID="del" CommandArguement='<%= comment.CommentId%>' onCommand="delete_click" Text="Delete"/>
<%}%>
但是,当我在我的 ascx 文件中编写它并单击链接时,传递给命令参数的值"<%=comment.CommentId%>"
不是 commentId 本身。请指导我做错了什么?
根据答案和评论编辑 1 ,我已经开始使用转发器而不是 foreach 和纯代码。这是我想出的代码
<asp:Repeater ID="commRepeater" SelectMethod="GetPageComments" runat="server">
<ItemTemplate>
<p>
<%#Eval("Comment") %>
<%if(Page.User.Identity.IsAuthenticated && Page.User.Identity.GetUserId() == Eval("UserId")){ %>
<span>
<asp:LinkButton Text="Edit" runat="server" ID="EditLink" CommandArgument='<%#Eval("CommentId")%>' OnClick="Update_Comment" />
<asp:LinkButton Text="Delete" runat="server" ID="DeleteLink" CommandArgument='<%#Eval("CommentId")%>' OnClientClick="if (!confirm('Are you sure you want delete?')) return false;" OnCommand="Delete_Comment" />
</span>
<%} %>
</p>
</ItemTemplate> </asp:Repeater>
您可以看到,如果用户已登录并且他的 ID 与评论的用户匹配,我正在尝试显示编辑和删除链接,但它告诉我可以Eval
在数据绑定控件中使用。我将如何在转发器中有条件地隐藏/显示编辑/删除链接