你好我试图将参数从asp LinkButton传递给子例程并且它不起作用
这是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中完成这项工作
答案 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" />