2010-11-04 41 views
3

J'ai été confronté à la fin profonde avec un projet VB.NET existant au travail. Je n'ai jamais utilisé VB.NET avant donc je me bats un peu. Est-ce que quelqu'un sait comment résoudre ce qui suit.Passage de l'instance à la méthode partagée dans VB.NET

Je dois passer une instance au côté client, puis la passer à une méthode partagée afin d'accéder aux méthodes d'instance à partir de quand la méthode partagée.

Le point de départ est un contrôle fileupload dans le code HTML de mon fichier Contacts.aspx:

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

L'événement onchange appelle une méthode javascript, voir ci-dessous, celui-ci utilise PageMethods AJAX appelé une méthode partagée dans mon code derrière

Voici le code de script qui est dans mon dossier 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> 

Ceci est un exemple de classe du genre de chose que je veux faire, Je pense que je dois utiliser l'instance comme contacts en tant que paramètre d'entrée à la fonction WebMethod mais je ne sais pas comment passer l'instance:

Ceci est la classe dans mon fichier Contacts.aspx.vb . Si quelqu'un connaît la solution, s'il vous plaît pourrait-ils mettre à jour le code que je ne serai probablement pas en mesure de comprendre si vous donnez une description juste. J'espère juste que je suis sur la bonne voie.

+0

Je ne comprends vraiment pas ce que vous faites réellement. Qu'est-ce que Contacts pour une classe (JS ou VB.Net), pourquoi devez-vous la passer au serveur et pourquoi ne pouvez-vous pas appeler GetContactName (s'il s'agit d'une "classe" JS) sur le client? Si c'est une classe .Net, vous devez passer le ContactID (si quelque chose comme ceci est disponible) à WebMethod et créer une instance sur le côté serveur. –

Répondre

2

Si je vous comprends bien, vous voulez accéder à une classe (votre instance) créé dans le cycle de vie de la page ASP.Net de votre PageMethod - par exemple, créé lors du chargement de la page initiale ou upload de fichiers, etc.

Cette n'est pas directement possible car PageMethods ne passe pas par le cycle de vie complet de la page (ce sont essentiellement des services web). Vous devez donc transmettre une sorte d'identifiant au client qui, lorsqu'il est renvoyé au serveur dans le PageMethod, peut être utilisé pour recréer ou récupérer votre instance.

par exemple lors de la charge de première page:

session("ContactID") = instance 

Votre PageMethod pourrait ressembler à:

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

où le paramètre key est la même clé que vous avez utilisé pour stocker votre instance dans l'état de session .

Dans votre javascript:

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

Je me suis fait sortir du projet pour faire un autre travail mais maintenant je suis de retour, c'était agréable de voir la réponse que je cherchais. Merci beaucoup!! – EnterpriseMonkey

+0

@EnterpriseMonkey - Heureux que cela ait été utile. Vous pouvez voter et accepter la réponse pour montrer votre appréciation :) –