2008-12-03 11 views
0

Je (comme l'indique question) comme faire un appel asynchrone, de préférence en utilisant ASP.net AJAX.Faire un appel WebService Asynchronous De ASP.Net MVC

Le code pour le WebMethod ressemble à ceci:

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

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

Dans mes tentatives de le faire, je ne l'ai pas été en mesure d'obtenir le WebMethod. La référence de service est en place, donc au moins je n'ai pas foiré ça.

Merci pour l'aide ...

Répondre

0

Here vous pouvez trouver un exemple d'invoquer des méthodes asynchrones avec AJAX dans ASP.NET MVC avec des éléments comme

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

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

<% } %> 

Vous pouvez recevoir les params dans la méthode du contrôleur et appeler le webservice à partir de là.

3

Ce n'est pas une réponse à votre question, mais un avertissement. Je regardais cette méthode et pensais, "hmm, je me demande si ASP.NET se soucie si un appel à cette méthode Web vient de votre site ou ailleurs?" Une recherche rapide sur google me porte à croire qu'il n'y a aucune vérification pour s'assurer que certaines personnes n'utilisent pas vos méthodes Web pour leurs propres désirs malveillants (here's a blog post talking about this).

Alors, avant de vous ce travail, vous voudrez peut-être réfléchir à des moyens d'empêcher quelqu'un de piratage de votre webmethod pour me envoyer des e-mails Viagra. Parce que si je reçois un e-mail Viagra de votre site Web, je ne serai pas très heureux avec vous.

+0

Hmmm, je ne l'avais pas considéré que, merci pour le heads up. Avez-vous des suggestions? – KevDog

+0

J'ai regardé de plus près le lien que vous avez mis en place. L'appel n'est pas dans le code derrière la page, mais dans un fichier .asmx pour un service Web distinct. Je ferai d'autres lectures pour voir si les mêmes mises en garde s'appliquent. – KevDog

-3

Selon MSDN Library

Pour un service Web à accessible à partir du script, il doit être un service .asmx Web dont le service Web classe est qualifié avec l'attribut ScriptServiceAttribute . Les méthodes individuelles appelées depuis le script doivent être qualifiées avec l'attribut WebMethodAttribute .

voir http://msdn.microsoft.com/en-ca/library/bb398998.aspx

+0

Eh bien, l'attribut WebMethod est là et l'attribut scriptservice fait partie de la classe. Donc, je ne suis pas sûr de ce que vous essayez d'obtenir avec cette réponse. – KevDog

Questions connexes