在button和sub vb.net之间传递变量

时间:2012-05-22 12:24:26

标签: asp.net vb.net

你好我试图将参数从asp LinkBut​​ton传递给子例程并且它不起作用

这是linkbutton

<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中完成这项工作

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您不能将任何内容直接传递给事件处理程序。但您可以使用LinkButton的{​​{3}}属性:

<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,因为它将显示在服务器上而不是浏览器中。

答案 2 :(得分:1)

您不必使用DirectCast方法。你的sub看起来更像是这样:

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" />