1

您好,我正在尝试将参数从 asp LinkBut​​ton 传递给子例程,但它不起作用

这是链接按钮

<asp:LinkButton runat="server" ID="linkId" OnClick="doSomething(10)">ID
</asp:LinkButton>

这是我的潜艇

   Public Sub doSomething(ByVal mon As Integer)
      MsgBox("this is the number : " & mon)
   End Sub

有人可以告诉我如何在 VB.net 中进行这项工作

4

3 回答 3

4

CommandArgument用属性试试

 <asp:LinkButton runat="server" ID="linkId" OnClick="doSomething"
    CommandArgument="10">ID</asp:LinkButton>

  Public Sub doSomething(sender As Object, e As EventArgs)
      Dim btn As LinkButton = DirectCast(sender, LinkButton )
      Dim msg As String = "this is the number : " & Int32.Parse(btn.CommandArgument)
  End Sub
于 2012-05-22T12:31:37.387 回答
1

您不能将任何内容直接传递给事件处理程序。但是你可以使用LinkButton'CommandArgument属性:

<asp:LinkButton runat="server" 
       ID="linkId" 
       OnClick="LinkButton_Click"
       CommandArgument="10">ID
</asp:LinkButton>

在您的代码隐藏中(使用此事件的正确签名):

Protected Sub LinkButton_Click(sender As Object, e As EventArgs) 
     Dim lb = DirectCast(sender, LinkButton)
     Dim ID As String = lb.CommandArgument;
End Sub

请注意,不应在 ASP.NET 环境中使用 MessageBox,因为它将显示在服务器上而不是浏览器中。

于 2012-05-22T12:32:40.797 回答
1

您不必使用 DirectCast 方法。您的潜艇看起来像这样可能更有意义:

Public Sub doSomething(sender As Object, e As CommandEventArgs)
  Dim msg As String = "this is the number : " & e.CommandArgument
End Sub

您还可以在控件的 CommandName 属性中存储第二个值并以相同的方式使用它。

编辑:对您的控件稍作更改,使用 OnCommand 而不是 OnClick:

<asp:LinkButton runat="server" ID="linkId" OnCommand="doSomething"
CommandArgument="10" Text="ID" />
于 2012-09-27T00:20:13.547 回答