在VB.NET中将实例传递给共享方法

时间:2010-11-04 09:06:29

标签: ajax vb.net methods shared

我已经深入了解了现有的VB.NET项目。我之前从未使用过VB.NET,所以我有点挣扎。有谁知道如何解决以下问题。

我需要将一个实例传递给客户端,然后将其传递给共享方法,以便在共享方法时访问实例方法。

起点是我的Contacts.aspx文件的HTML中的文件上载控件:

<asp:FileUpload ID="DocUpload1" runat="server" onchange="CallMe();" />

onchange事件调用javascript方法,见下文,这使用AJAX PageMethods在我的代码后面调用了一个Shared方法

这是我的Contact.aspx文件中的脚本代码

    <script language="javascript">
      function CallMe() {
          // call server side method
          PageMethods.GetContact(0, CallSuccess, CallFailed, null);
      }

      // set the destination textbox value with the ContactName
      function CallSuccess(res, destCtrl) {
      }

      // alert message on some failure
      function CallFailed(res, destCtrl) {
          alert(res.get_message());
      }        

</script>

这是我想要做的事情类型的示例类,我想我需要使用“实例作为联系人”作为WebMethod函数的输入参数,但我不知道如何将实例传递给它:

这是我的Contacts.aspx.vb文件中的类。

Partial Class Contacts

    <System.Web.Services.WebMethod()> _
    Public Shared Function GetContact(ByVal instance As Contacts) As String
        Return instance.GetContactName()  'This is an instance class which I need to call.
    End Function

    'This is my instance class which I want to call from the Shared Class.
    Public Shared Function GetContactName() As String
        Return "Fred Bloggs"
    End Function

End Class

如果有人知道解决方案,请他们更新代码,因为如果你只是给出描述,我可能无法理解。我只是希望自己走在正确的轨道上。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望从instance访问在ASP.Net页面生命周期中创建的类(您的PageMethod) - 例如在初始页面加载或文件上载期间创建的等

这不是直接可行的,因为PageMethods没有经历整个页面生命周期(它们本质上是web服务)。因此,您需要将某种标识符传递给客户端,当传递回PageMethod中的服务器时,可以用来重新创建或检索instance

例如,在初始页面加载期间:

session("ContactID") = instance

您的PageMethod可能类似于:

Public Shared Function GetContact(ByVal key As String) As String
    Return HttpContext.Current.Session(key).GetContactName()  
End Function

其中参数key与您用于在会话状态中存储实例的密钥相同。

在你的javascript中:

 function CallMe() {
          // call server side method
          PageMethods.GetContact('ContactID', CallSuccess, CallFailed, null);
 }