【发布时间】:2016-01-08 10:22:01
【问题描述】:
我在 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
基于答案和 cmets,我已经开始使用转发器而不是 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。我将如何在转发器中有条件地隐藏/显示编辑/删除链接
【问题讨论】:
-
请注意,我在传递给命令参数时使用了带有
'<%=comment.CommentId%>'的单引号 -
应该是
CommandArgumentBTW。
标签: asp.net webforms commandargument