Pergunta

Eu (como a questão estados) como fazer uma chamada assíncrona, de preferência usando ASP.net AJAX.

O código para os olhares WebMethod assim:

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

Os campos na vista são, sem surpresa:. Nome, email, assunto, corpo

Em minhas tentativas de fazer isso eu não tenho sido capaz de chegar ao WebMethod. A referência de serviço está no lugar, então pelo menos eu não estragar isso.

Obrigado pela ajuda ...

Foi útil?

Solução

Aqui pode encontrar um exemplo de chamar métodos assíncronos com AJAX em ASP.NET MVC com elementos como

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

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

<% } %>

Você pode receber os parâmetros no método controlador e chamar o webservice de lá.

Outras dicas

Esta não é uma resposta à sua pergunta, mas um aviso. Eu estava olhando para este método e pensamento, "Hmm, eu me pergunto se cuidados ASP.NET se uma chamada para este método web vem de seu site ou em outro lugar?" Um rápido leva google Sonda-me a acreditar que não há nenhuma verificação para certificar-se alguns douche não está usando seus métodos da web para seus próprios desejos maliciosos ( aqui está um post falando sobre isso ).

Portanto, antes de começar este trabalho, você pode querer pensar em maneiras de impedir que alguém sequestrar seu webmethod para me enviar e-mails de Viagra. Porque se eu recebo um e-mail Viagra de seu website, eu não vou ser muito feliz com você.

De acordo com o MSDN Library

Para que um serviço Web para ser acessado a partir de script, ele deve ser um serviço Web .asmx cujo serviço Web classe é qualificado com o atributo ScriptServiceAttribute. Os métodos individuais a ser chamado a partir de script deve ser qualificado com o WebMethodAttribute atributo.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top