【问题标题】:How to share a variable value with a webmethod?如何与 webmethod 共享变量值?
【发布时间】:2014-08-19 01:41:45
【问题描述】:

我有这个代码:

 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,但我不知道这将如何解决我的问题。我还阅读了一些关于使用隐藏字段的帖子,这需要我去两次。我很想避免这种情况。

【问题讨论】:

  • 您可以将main_id“传递”给客户端代码,然后将其作为附加参数从客户端代码传递给服务。
  • @JohnSaunders 我希望尽可能避免这种情况,正如我在原始帖子中提到的那样。谢谢。
  • 好吧,你无法避免这样的事情。即使它不是 WebMethod,它 Shared.

标签: asp.net asmx webmethod


【解决方案1】:

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

【讨论】:

  • ps2goat,我尽量避免使用会话,因为它很难维护。我看过这篇使用类的帖子stackoverflow.com/questions/10329492/…。我想知道我是否可以做类似的事情。
  • @loveprogramming,product_idproject_id 是两个不同的东西吗?你不能通过 jQuery 传递这两个值吗?
  • @loveprogramming:webmethod 是古老的 ASMX Web 服务技术的一部分,应该避免使用。
  • @ps2goat,是的,它们是两个不同的东西。我通过将 main_id 的值设置为 1 来简化 main_id,但实际上在我的实际代码中涉及一些操作。我可以从 jquery 传递它,但是我需要在隐藏字段中设置值并使用 jquery 从隐藏字段中获取值。我只是认为必须有更简单的方法来获得它的价值。
  • 你觉得这篇文章怎么样:stackoverflow.com/questions/10329492/…。有没有办法可以创建一个类并让 web 方法通过它访问值?
猜你喜欢
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 2014-04-20
相关资源
最近更新 更多