我有这段代码:
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,但我无法弄清楚这将如何解决我的问题。我还阅读了一些关于使用隐藏字段的帖子,这需要我去两次旅行。我很乐意避免这种情况。
答案 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