J'écris une page Web dans ASP.NET. J'ai du code JavaScript et j'ai un bouton d'envoi avec un événement de clic.
Est-il possible d'appeler une méthode que j'ai créée dans ASP avec l'événement click de JavaScript?
javascript
c#
asp.net
onclick
MattSayar
la source
la source
Réponses:
Eh bien, si vous ne voulez pas le faire en utilisant Ajax ou de toute autre manière et que vous voulez simplement qu'une publication ASP.NET normale se produise, voici comment procéder (sans utiliser d'autres bibliothèques):
C'est un peu délicat cependant ... :)
je. Dans votre fichier de code (en supposant que vous utilisez C # et .NET 2.0 ou version ultérieure), ajoutez l'interface suivante à votre classe Page pour qu'elle ressemble à
ii. Cela devrait ajouter (en utilisant Tab- Tab) cette fonction à votre fichier de code:
iii. Dans votre événement onclick en JavaScript, écrivez le code suivant:
Cela appellera la méthode 'RaisePostBackEvent' dans votre fichier de code avec 'eventArgument' comme 'argumentString' que vous avez passé à partir du JavaScript. Désormais, vous pouvez appeler tout autre événement de votre choix.
PS: C'est 'underscore-underscore-doPostBack' ... Et, il ne devrait pas y avoir d'espace dans cette séquence ... D'une manière ou d'une autre, le WMD ne me permet pas d'écrire sur des traits de soulignement suivis d'un caractère!
la source
window.onbeforeunload = confirmExit; //debugger; function confirmExit() { var pageId = '<%= Page.ClientID %>'; var argumentString = 'ReleaseLock'; __doPostBack(pageId, argumentString); }
onkeyup
événement. GotJavaScript runtime error: '__doPostBack' is undefined
. J'utilise C # et ASP.NET 2.0.La
__doPostBack()
méthode fonctionne bien.Une autre solution (très hackish) consiste simplement à ajouter un bouton ASP invisible dans votre balisage et à cliquer dessus avec une méthode JavaScript.
Depuis votre JavaScript, récupérez la référence au bouton en utilisant son ClientID , puis appelez la méthode .click () dessus.
la source
La bibliothèque Microsoft AJAX accomplira cela. Vous pouvez également créer votre propre solution qui implique l'utilisation d'AJAX pour appeler vos propres fichiers de script aspx (en gros) pour exécuter des fonctions .NET.
Je suggère la bibliothèque Microsoft AJAX. Une fois installé et référencé, il vous suffit d'ajouter une ligne dans votre page load ou init:
Ensuite, vous pouvez faire des choses comme:
Ensuite, vous pouvez l'appeler sur votre page comme:
Le dernier paramètre de votre appel de fonction doit être la fonction de rappel javascript qui sera exécutée lorsque la requête AJAX est renvoyée.
la source
Vous pouvez le faire de manière asynchrone en utilisant .NET Ajax PageMethods. Voir ici ou ici .
la source
Je pense que l'article de blog Comment récupérer et afficher les données de la base de données SQL Server dans la page ASP.NET à l'aide d'Ajax (jQuery) vous aidera.
Code JavaScript
Fonction côté serveur ASP.NET
la source
La programmation statique et fortement typée m'a toujours semblé très naturelle, alors au début, j'ai résisté à l'apprentissage de JavaScript (sans parler du HTML et du CSS) lorsque je devais créer des front-ends basés sur le Web pour mes applications. Je ferais n'importe quoi pour contourner ce problème, comme la redirection vers une page juste pour effectuer et agir sur l'événement OnLoad, tant que je pourrais coder en C # pur.
Vous constaterez cependant que si vous allez travailler avec des sites Web, vous devez avoir l'esprit ouvert et commencer à penser plus orienté Web (c'est-à-dire, n'essayez pas de faire des choses côté client sur le serveur et vice-versa) . J'adore les formulaires Web ASP.NET et je les utilise toujours (ainsi que MVC ), mais je dirai qu'en essayant de simplifier les choses et en cachant la séparation du client et du serveur, cela peut confondre les nouveaux arrivants et finir par rendre les choses plus difficiles parfois .
Mon conseil est d'apprendre quelques bases de JavaScript (comment enregistrer des événements, récupérer des objets DOM, manipuler CSS, etc.) et vous trouverez la programmation Web beaucoup plus agréable (pour ne pas dire plus facile). Beaucoup de gens ont mentionné différentes bibliothèques Ajax, mais je n'ai pas vu d'exemples Ajax réels, alors voilà. (Si vous n'êtes pas familier avec Ajax, tout ce que c'est, c'est faire une requête HTTP asynchrone pour actualiser le contenu (ou peut-être effectuer une action côté serveur dans votre scénario) sans recharger la page entière ou faire une publication complète.
Côté client:
C'est tout. Bien que le nom puisse être trompeur, le résultat peut également être en texte brut ou JSON, vous n'êtes pas limité au XML. jQuery fournit une interface encore plus simple pour effectuer des appels Ajax (parmi la simplification d'autres tâches JavaScript).
La requête peut être HTTP-POST ou HTTP-GET et ne doit pas nécessairement être sur une page Web, mais vous pouvez publier sur n'importe quel service qui écoute les requêtes HTTP, comme une API RESTful . L'API Web ASP.NET MVC 4 facilite également la configuration du service Web côté serveur pour gérer la demande. Mais beaucoup de gens ne savent pas que vous pouvez également ajouter des contrôleurs d'API au projet de formulaires Web et les utiliser pour gérer les appels Ajax comme celui-ci.
Du côté serveur:
Global.asax
Ensuite, enregistrez simplement la route HTTP dans votre fichier Global.asax, afin qu'ASP.NET sache comment diriger la requête.
Avec AJAX et les contrôleurs, vous pouvez publier de nouveau sur le serveur à tout moment de manière asynchrone pour effectuer toute opération côté serveur. Ce doublé offre à la fois la flexibilité de JavaScript et la puissance du C # / ASP.NET, offrant aux personnes qui visitent votre site une meilleure expérience globale. Sans rien sacrifier, vous obtenez le meilleur des deux mondes.
Références
la source
Il s'agit de la bibliothèque appelée AjaxPro qui a été écrit un MVP nommé Michael Schwarz . Cette bibliothèque n'a pas été écrite par Microsoft.
J'ai beaucoup utilisé AjaxPro, et c'est une très belle bibliothèque, que je recommanderais pour de simples rappels vers le serveur. Il fonctionne bien avec la version Microsoft d'Ajax sans aucun problème. Cependant, je noterais qu'avec la facilité avec laquelle Microsoft a fait Ajax, je ne l'utiliserais que si cela était vraiment nécessaire. Il faut beaucoup de JavaScript pour faire des fonctionnalités vraiment compliquées que vous obtenez de Microsoft en les déposant simplement dans un panneau de mise à jour.
la source
C'est si facile pour les deux scénarios (c'est-à-dire synchrone / asynchrone) si vous souhaitez déclencher un gestionnaire d'événements côté serveur, par exemple, l'événement Click de Button.
Pour déclencher un gestionnaire d'événements d'un contrôle: Si vous avez déjà ajouté un ScriptManager sur votre page, ignorez l'étape 1.
Ajoutez ce qui suit dans la section de script du client de votre page
Écrivez votre gestionnaire d'événements côté serveur pour votre contrôle
protected void btnSayHello_Click (expéditeur de l'objet, EventArgs e) {Label1.Text = "Hello World ..."; }
Ajouter une fonction client pour appeler le gestionnaire d'événements côté serveur
function SayHello () {__doPostBack ("btnSayHello", ""); }
Remplacez le "btnSayHello" dans le code ci-dessus par l'ID client de votre contrôle.
Ce faisant, si votre contrôle se trouve dans un panneau de mise à jour, la page ne s'actualisera pas. C'est si simple.
Une autre chose à dire est la suivante: soyez prudent avec l'ID client, car cela dépend de la stratégie de génération d'ID définie avec la propriété ClientIDMode.
la source
Si quelqu'un d'autre est comme Merk et a du mal à venir ça, j'ai une solution:
Lorsque vous avez un contrôle utilisateur, il semble que vous devez également créer le PostBackEventHandler dans la page parent. Et puis vous pouvez appeler le PostBackEventHandler du contrôle utilisateur en l'appelant directement. Voir ci-dessous:
Où UserControlID est l'ID que vous avez donné au contrôle utilisateur sur la page parent lorsque vous l'avez imbriqué dans le balisage.
Remarque: Vous pouvez également simplement appeler directement les méthodes appartenant à ce contrôle utilisateur (dans ce cas, vous n'aurez besoin que du gestionnaire RaisePostBackEvent dans la page parente):
la source
Vous souhaiterez peut-être créer un service Web pour vos méthodes courantes.
Ajoutez simplement un WebMethodAttribute sur les fonctions que vous souhaitez appeler, et c'est à peu près tout.
Avoir un service Web avec tous vos éléments courants facilite également la maintenance du système.
la source
Si la fonction __doPostBack n'est pas générée sur la page, vous devez insérer un contrôle pour le forcer comme ceci:
la source
En ce qui concerne:
Cela devrait être comme:
Où formID est l'ID de contrôle ASP.NET dans le fichier .aspx.
la source
Ajoutez cette ligne au chargement de la page si vous obtenez une erreur d'objet attendue.
la source
Vous pouvez utiliser
PageMethods.Your C# method Name
pour accéder aux méthodes C # ou aux méthodes VB.NET dans JavaScript.la source
Essaye ça:
Ou ca
Utilisez la propriété OnClientClick du bouton pour appeler des fonctions JavaScript ...
la source
Vous pouvez également l'obtenir en ajoutant simplement cette ligne dans votre code JavaScript:
Je pense que celui-ci est très simple!
la source
Veuillez essayer ceci:
ddlVoucherType est un contrôle que le changement d'index sélectionné appellera ... Et vous pouvez mettre n'importe quelle fonction sur le changement d'index sélectionné de ce contrôle.
la source
Le moyen le plus simple et le meilleur pour y parvenir est d'utiliser l'
onmouseup()
événement JavaScript plutôt queonclick()
De cette façon, vous lancerez JavaScript après avoir cliqué et cela n'interférera pas avec l'
OnClick()
événement ASP .la source
J'essaye ceci et ainsi je pourrais exécuter une méthode Asp.Net tout en utilisant jQuery.
Faites une redirection de page dans votre code jQuery
Ensuite, utilisez une chaîne de requête dans le chargement de la page
Donc pas besoin d'exécuter un code supplémentaire
la source
Cette réponse fonctionne comme un jeu d'enfant pour moi grâce au navigateur croisé:
Une autre solution (très hackish) consiste simplement à ajouter un bouton ASP invisible dans votre balisage et à cliquer dessus avec une méthode JavaScript.
Depuis votre JavaScript, récupérez la référence au bouton en utilisant son ClientID puis appelez la méthode .Click () dessus:
la source