Pregunta

Me gustaría (como dice la pregunta) hacer una llamada asincrónica, preferiblemente usando ASP.net AJAX.

El código para WebMethod se ve así:

[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);
}

Los campos en la vista son, no sorprendentemente: nombre, correo electrónico, asunto, cuerpo.

En mis intentos de hacer esto, no he podido acceder al WebMethod. La referencia de servicio está en su lugar, así que al menos no lo arruiné.

Gracias por la ayuda ...

¿Fue útil?

Solución

Aquí puede encontrar un ejemplo de invocación de métodos asincrónicos con AJAX en ASP.NET MVC con elementos como

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

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

<% } %>

Puede recibir los parámetros en el método del controlador y llamar al servicio web desde allí.

Otros consejos

Esta no es una respuesta a su pregunta, sino una advertencia. Estaba mirando este método y pensando, "hmm, me pregunto si a ASP.NET le importa si una llamada a este método web proviene de su sitio o de otro lugar". Una búsqueda rápida en Google me lleva a creer que no hay ninguna verificación para asegurarse de que algún imbécil no esté utilizando sus métodos web para sus propios deseos maliciosos ( aquí hay una publicación de blog que habla sobre esto ).

Por lo tanto, antes de que esto funcione, es posible que desee pensar en formas de evitar que alguien piratee su método web para enviarme correos electrónicos de Viagra. Porque si recibo un correo electrónico de Viagra de su sitio web, no voy a estar muy contento con usted.

Según la biblioteca de MSDN

  

Para que un servicio web sea   accedido desde el script, debe ser un   Servicio web .asmx cuyo servicio web   clase está calificada con el   ScriptServiceAttribute atributo.   Métodos individuales para llamar   el script debe estar calificado con el   Atributo WebMethodAttribute.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top