我在理解与ASP.NET LinkBut​​ton关联的CommandNameCommandArgument时遇到问题。我已阅读此文章-http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.commandname.aspx以及本网站上的其他问题。

我想我的问题是-“命令”到底是什么? CommandName基本上可以是任何文本吗?我以“排序”和“提交”为例。至于CommandArgument,它仅用于进一步指定“命令”的类型。正确?
非常感谢您的帮助。

最佳答案

Command可以是您想要的任何内容。

基本思想是,如果您说有一个中继器,并且在该中继器中有多个选项,则可以为每个选项指定不同的CommandName。然后,CommandArgument将基于该行的唯一标识符。

然后,在回发后,您可以检查触发了哪个CommandName,并根据该使用情况使用CommandArgument中的值

例如,标记看起来可能类似于...

<asp:Repeater runat="server" id="myRepeater">
  <ItemTemplate>
    <div>
      <asp:LinkButton runat="server" id="lnkEdit" CommandName="edit"
        CommandArgument="<%#Container.DataItem.Id%>" Text="Edit"
        OnClick="OnClickHandler" />
      <asp:LinkButton runat="server" id="lnkDelete" CommandName="delete"
        CommandArgument="<%#Container.DataItem.Id%>" Text="Delete"
        OnClick="OnClickHandler" />
    </div>
  </ItemTemplate>
</asp:Repeater>


然后,您的后包装处理程序可以检查查看单击了哪个...

Protected Sub OnClickHandler(ByVal sender As Object, ByVal e As EventArgs)
  Dim lnk as LinkButton = CType(sender,LinkButton)
  Select Case lnk.CommandName
    Case "edit"
      EditItem(lnk.CommandArgument)
    Case "delete"
      DeleteItem(lnk.CommandArgument)
  End Select
End Sub

09-19 09:00