J'essaie de comprendre comment effectuer ce qui suit:ASP.NET AJAX - ScriptManagerProxy et manipulation bouton html clique
- poignée clic côté client cas de bouton - éviter postback si le résultat de javascript appel est faux (par exemple
onclick="js:return IsThisAllowed()"
) - méthode Javascript retourne vrai ou faux, selon le résultat de l'appel à la méthode de service Web généré en utilisant ScriptManagerProxy
Le code ci-dessous est simplifiée vers le bas pour les principaux composants que je parle i n cette question. Je peux alerter() la valeur de retour sans probleme, mais la partie que je rencontre des problemes est comment je peux retourner le resultat de l'appel de la methode de service web au gestionnaire onclick? Puisque la fonction Finish() est appelée dans un thread séparé en cas de réussite de ce que je suppose être l'appel XmlHttp.send(), comment puis-je envoyer la valeur de la réponse en tant que valeur de retour de la méthode javascript? Est-ce que je vais à ce sujet tout faux? J'ai déjà utilisé un code similaire plusieurs fois avant de mettre à jour le DOM avec les valeurs de retour, comme dans <div>
, mais je n'ai jamais eu à m'inquiéter de capturer la valeur de retour et de l'utiliser dans mon script.
Ce que j'ai jusqu'à présent:
méthode de service Web .NET (VB.NET):
<WebMethod()> _
<ScriptMethod()> _
Public Function IsAllowed() As Boolean
Return True
End Function
code .NET pour la page pour générer des méthodes de service Web AJAX, et le bouton html
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebServices/MyWebService.asmx" />
</Services>
</asp:ScriptManagerProxy>
<asp:Button ID="_btn" runat="server" OnClientClick="js:return IsAllowed();" />
Javascript
Oui, c'est ce que j'ai vécu, mais avez-vous des suggestions pour accomplir ce que j'essaie de faire? – Keith
Je pense que j'ai compris ce que vous essayez d'accomplir - l'annulation de l'ASP.Postback NET basé sur le résultat de l'appel de service Web. Je mets à jour ma réponse avec une solution. –
Exactement - et j'ai déjà la logique dans l'événement click pour empêcher le traitement (et lancer une erreur) si l'appel n'est pas autorisé, mais je préfère ne pas avoir la surcharge d'une publication complète si je peux accomplir cette Ajax- style. – Keith