Question

J'aimerais (comme l'indique la question) effectuer un appel asynchrone, de préférence en utilisant ASP.net AJAX.

Le code de la méthode Web ressemble à ceci:

[WebMethod]
public void SendMail(string name, string email, string subject, string body)
{
  MailMessage toSend = new MailMessage(email, address@domain.com, subject, body);
  var smtp = new SmtpClient();
  smtp.Send(toSend);
}

Les champs de la vue sont, sans surprise: nom, email, sujet, corps.

Pour ce faire, je n’ai pas pu accéder à WebMethod. La référence de service est en place, donc au moins je ne l'ai pas foiré.

Merci pour l'aide ...

Était-ce utile?

La solution

Ici , vous trouverez un exemple d'invocation de méthodes asynchrones avec AJAX dans ASP.NET MVC avec des éléments tels que

<% using (Ajax.Form("SendMail", new AjaxOptions { UpdateTargetId = "resultDiv" })) { %>

   <!-- Your form elements here... -->

<% } %>

Vous pouvez recevoir les paramètres dans la méthode du contrôleur et appeler le service Web à partir de là.

Autres conseils

Ceci n'est pas une réponse à votre question mais un avertissement. J'examinais cette méthode et pensais: "Hmm, je me demande si ASP.NET se soucie de savoir si un appel à cette méthode Web provient de votre site ou d'un autre site?" Une recherche rapide sur Google m'amène à penser qu'il n'y a aucune vérification pour s'assurer que certains utilisateurs n'utilisent pas vos méthodes Web pour leurs propres désirs malveillants ( voici un billet de blog qui en parle ).

Donc, avant que cela fonctionne, vous voudrez peut-être réfléchir aux moyens d'empêcher quelqu'un de détourner votre méthode Web pour m'envoyer des courriels de Viagra. Parce que si je reçois un email Viagra de votre site Web, je ne serai pas très heureux avec vous.

Selon la bibliothèque MSDN

  

Pour qu'un service Web soit   accessible à partir du script, ce doit être un   Service Web .asmx dont le service Web   la classe est qualifiée avec le   Attribut ScriptServiceAttribute.   Méthodes individuelles à appeler de   le script doit être qualifié avec le   Attribut WebMethodAttribute.

voir http://msdn.microsoft.com/en-ca/ bibliothèque / bb398998.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top