3 Stimmen

Übergabe einer Instanz an eine gemeinsam genutzte Methode in VB.NET

Ich wurde bei einem bestehenden VB.NET-Projekt auf der Arbeit ins kalte Wasser geworfen. Ich habe VB.NET noch nie benutzt, daher habe ich ein wenig zu kämpfen. Weiß jemand, wie man das folgende Problem lösen kann.

Ich muss eine Instanz an die Client-Seite übergeben und dann an eine gemeinsame Methode übergeben, um auf Instanzmethoden zuzugreifen, wenn die gemeinsame Methode.

Der Ausgangspunkt ist ein Fileupload-Steuerelement im HTML-Code meiner Contacts.aspx-Datei:

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

Das onchange-Ereignis ruft eine Javascript-Methode auf, siehe unten, diese verwendet AJAX PageMethods, um eine Shared-Methode in meinem Code dahinter aufzurufen

Der folgende Skriptcode befindet sich in meiner Contact.aspx-Datei

    <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>

Dies ist eine Beispielklasse für die Art der Sache, die ich tun möchte, ich denke, ich muss die "Instanz als Kontakte" als Eingabeparameter für die WebMethod-Funktion verwenden, aber ich weiß nicht, wie man die Instanz in es übergeben:

Dies ist die Klasse in meiner Contacts.aspx.vb-Datei.

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

Wenn jemand die Lösung kennt, könnte er bitte den Code aktualisieren, da ich wahrscheinlich nicht in der Lage sein werde, zu verstehen, wenn Sie nur eine Beschreibung geben. Ich hoffe nur, dass ich auf der richtigen Spur bin.

2voto

Geoff Appleford Punkte 18140

Wenn ich Sie richtig verstehe, möchten Sie auf eine Klasse (Ihre instance ), die im ASP.Net-Seitenlebenszyklus von Ihrer PageMethod - z. B. beim ersten Laden einer Seite oder beim Hochladen einer Datei usw.

Dies ist nicht direkt möglich, da PageMethods nicht den gesamten Lebenszyklus einer Seite durchlaufen (sie sind im Wesentlichen Webservices). Sie müssen also eine Art Identifikator an den Client übergeben, der bei der Rückgabe an den Server in der PageMethod kann verwendet werden, um Ihre Daten neu zu erstellen oder abzurufen. instance .

z. B. beim ersten Laden der Seite:

session("ContactID") = instance

Ihre PageMethod könnte etwa so aussehen:

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

wobei der Parameter key ist derselbe Schlüssel, den Sie zum Speichern Ihrer Instanz im Sitzungszustand verwendet haben.

In Ihrem Javascript:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X