VB.Net:从共享子调用sub

时间:2016-05-03 17:28:07

标签: asp.net vb.net asp.net-ajax

我在网页上有一些Ajax,它将一些数据提供给服务器端的VB.Net方法。一旦该数据在服务器端方法中,我需要调用另一个服务器端方法来使用我刚刚收集的数据。这是一个非常简化的例子:

' This method gets the input from the Ajax code on the web page.
<System.Web.Services.WebMethod> _
Public Shared Sub GetAwesome(VBInputText As String)
    Dim strTest As String = VBInputText
    ' Now that we have collected input from the user, 
    ' we need to run a method that does a ton of other stuff.
    DisplayAwesome(VBInputText)
End Sub

Protected Sub DisplayAwesome(AwesomeIn As String)
    ' The real app does a lot more than this.  For this example, it 
    ' just sets the text of a literal.
    litAwesomeResult.Text = AwesomeIn
End Sub

当然,在上面的例子中,DisplayAwesome(VBInputText)给了我'无法引用实例成员...'错误。那么,现在可以从Protected Sub DisplayAwesome拨打Public Shared Sub GetAwesome吗?我希望能够接近这种解决方案,因为它可以很好地与应用程序一起使用,因为它已经由另一位同事编写。

2 个答案:

答案 0 :(得分:1)

遗憾的是,您无法执行此操作,因为页面方法DisplayAwesome定义为Protected,您需要该类的实例才能访问Protected方法。但是另一个实例的更改不会反映在当前的UI中。您可以做的另一件事是将DisplayAwesome设为共享,但这次您无法访问共享函数内的UI元素。

在这种情况下你可以做的事情是,将数据返回到被调用的方法(在前端)并处理那里的litAwesomeResult.Text

答案 1 :(得分:0)

调用名为Form Class的sub,如下所示:

FormName.DisplayAwesome(VBInputText)

在VB.Net中,默认情况下可以使用Name of Form Class调用共享方法不共享的方法,因为默认实例是VB应用程序框架创建和管理它的表单类型被添加到项目中。

有关详细信息,请参阅:

VB.NET Default Form Instances