2010-01-25 6 views
7

Les gars, j'ai besoin d'aide. J'ai un site Web ASP.NET et un contrôle personnalisé (appelons-le myControl). Je dois appeler une méthode sur ce contrôle avec AJAX. Je poste un appel ajax de JavaScript (jQuery) à C# WebMethod. Cela fonctionne correctement, mais je n'arrive pas à accéder à myControl dans une méthode Web statique. Des idées pour résoudre ce problème?Accéder au contrôle ASP.NET à partir de static [WebMethod] (appel JS ajax)

Version courte: appel AJAX de JS à C# WebMethod fonctionne ->* ici (dans cette méthode) Je dois appeler une méthode sur mon contrôle personnalisé qui est inaccessible en raison du type de méthode statique *

[WebMethod] 
public static List<CustomListControl.IListItem> GetListItems() 
{ 
    // CAN'T GET TO MY CONTROL - need to return myContorl.Items; 
    return null; 
} 
+0

Possible copie de [Comment obtenir des contrôles dans la méthode web statique] (https://stackoverflow.com/questions/8967763/how-to-get-controls-in-static-web-method) –

Répondre

5

Eh bien, ce n'est pas la bonne approche. Au niveau de la méthode de service Web, vous ne pouvez rien voir à propos de la structure de la page. Dans cette méthode, vous pouvez uniquement charger votre liste d'éléments et la renvoyer. Où cette liste est liée n'est pas l'affaire de GetListItems.

Vous pouvez gérer l'affichage des éléments en implémentant une fonction de rappel (voir http://mattberseth.com/blog/2007/06/aspnet_ajax_invoke_a_static_me.html par exemple) ou en utilisant l'approche UpdatePanel.

+0

Je ne suis pas sûr que nous nous comprenons :) Je dois implémenter une liste synchronisée (la liste des clients doit être la même que la liste sur un serveur) donc chaque changement doit être posté sur le serveur. Par exemple, je veux supprimer un élément avec ajax - l'utilisateur supprime un élément dans une liste et les appels ajax à la méthode de contrôle personnalisé qui supprime cet élément dans la liste sur le serveur. [WebMethod] devrait être comme un proxy ou un médiateur: JS ajax calls * Méthode .aspx -> cette méthode appelle une méthode sur customControl – Heko

+0

J'ai écrit à tort sur une méthode de service web mais cela ne change pas l'argument :). Tant que vous utilisez un WebMethod, vous ne pouvez pas accéder à vos contrôles à ce niveau. Vous pouvez gérer l'objet Contexte, Session et ainsi de suite, ou appeler une bibliothèque externe mais c'est tout.
Vous n'avez que deux façons de faire ce que vous voulez:
1 - Utilisez un UpdatePanel (suppression de l'appel JQuery). Avec cette solution, vous pouvez gérer votre contrôle à partir de la méthode comme vous le faites dans un scénario de publication complet. 2 - Injecter le résultat de la méthode web dans le balisage existant. – mamoo

+0

Merci! Je vais essayer;) – Heko

Questions connexes