Domanda

Vorrei (come afferma la domanda) fare una chiamata asincrona, preferibilmente usando ASP.net AJAX.

Il codice per WebMethod è simile al seguente:

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

I campi nella vista sono, non a caso: nome, email, oggetto, corpo.

Nei miei tentativi di farlo non sono stato in grado di accedere al WebMethod. Il riferimento al servizio è attivo, quindi almeno non l'ho rovinato.

Grazie per l'aiuto ...

È stato utile?

Soluzione

Qui puoi trovare un esempio di invocazione di metodi asincroni con AJAX in ASP.NET MVC con elementi come

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

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

<% } %>

Puoi ricevere i parametri nel metodo controller e chiamare il servizio web da lì.

Altri suggerimenti

Questa non è una risposta alla tua domanda ma un avvertimento. Stavo guardando questo metodo e pensando, "hmm, mi chiedo se ASP.NET si preoccupa se una chiamata a questo metodo web proviene dal tuo sito o da qualche altra parte?" Una rapida ricerca su Google mi porta a credere che non ci sia alcun controllo per assicurarsi che qualche idiota non stia usando i tuoi metodi web per i suoi desideri maliziosi ( ecco un post sul blog che parla di questo ).

Quindi, prima di farlo funzionare, potresti voler pensare a modi per impedire a qualcuno di dirottare il tuo metodo web per inviarmi e-mail sul Viagra. Perché se ricevo un'e-mail sul Viagra dal tuo sito Web, non sarò molto contento di te.

Secondo la MSDN Library

  

Per essere un servizio Web   accessibile dallo script, deve essere un   Servizio Web .asmx il cui servizio Web   la classe è qualificata con il   Attributo ScriptServiceAttribute.   Metodi individuali da chiamare   lo script deve essere qualificato con   Attributo WebMethodAttribute.

vedi http://msdn.microsoft.com/en-ca/ biblioteca / bb398998.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top