如何使用webmethod共享变量值?

时间:2014-08-19 01:41:46

标签: asp.net asmx webmethod

我有这段代码:

 Dim main_id As int 

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    main_id =1
End Sub

<WebMethod()> _
Public Shared Function BindPersonnel(ByVal product_id As String) As String
   Dim project_id AS int16
   project_id=main_id 'this doesn't work

End Function

在页面加载时,我设置变量main_id的值,我需要一种方法以某种方式与webmethod函数共享main_id,如何做到这一点?我没有尝试会话变量,我不想使用会话变量。我找到了这个链接Accessing a common variable in WebMethod and jQuery,但我无法弄清楚这将如何解决我的问题。我还阅读了一些关于使用隐藏字段的帖子,这需要我去两次旅行。我很乐意避免这种情况。

1 个答案:

答案 0 :(得分:0)

WebMethods独立于页面上的其他变量。如果您想要访问main_id,可以将其声明为Private Shared main_id As Integer,但这会导致您的所有用户都可以访问您可能不想要的相同ID值。

最简单的方法可能是将值存储在SessionState中,并在WebMethod中启用sessionstate访问。另一方面,这会删除您正在寻找的类似异步的功能(可能不是问题)。

SessionState将使您能够拥有每会话值(避免使用上面提到的Shared解决方案。)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles    Me.Load
    Session("main_id") = 1
End Sub

<WebMethod(EnableSession:=True)>
Public Shared Function BindPersonnel(ByVal product_id As String) As String
   Dim project_id As Integer = CInt(HttpContext.Current.Session("main_id"))
End Function