Вопрос

Я хотел бы (как говорится в вопросе) сделать асинхронный вызов, предпочтительно с использованием ASP.net AJAX.

Код для WebMethod выглядит следующим образом:

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

Поля в представлении, что неудивительно: имя, адрес электронной почты, тема, тело.

В моих попытках сделать это я не смог добраться до WebMethod. Сервисная ссылка на месте, так что, по крайней мере, я не облажался.

Спасибо за помощь ...

Это было полезно?

Решение

Здесь вы можете найти пример вызова асинхронных методов с AJAX в ASP.NET MVC с такими элементами, как

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

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

<% } %>

Вы можете получить параметры в методе контроллера и вызвать веб-сервис оттуда.

Другие советы

Это не ответ на ваш вопрос, а предупреждение. Я смотрел на этот метод и думал: & Quot; хм, мне интересно, заботится ли ASP.NET, поступает ли вызов этого веб-метода с вашего сайта или откуда-то еще? & Quot; Быстрый поиск в Google заставляет меня поверить, что нет никаких проверок, чтобы убедиться, что какой-то душ не использует ваши веб-методы для своих собственных злонамеренных желаний ( вот сообщение в блоге, в котором об этом говорится ).

Итак, прежде чем начать работать, вы можете подумать о том, как запретить кому-либо угонять ваш веб-метод и отправлять мне электронные письма от Виагры. Потому что, если я получу электронное письмо от Виагры с вашего сайта, я не буду очень доволен вами.

По данным библиотеки MSDN

  

Чтобы веб-служба была   доступ из скрипта, это должно быть   Веб-сервис .asmx, чей веб-сервис   класс квалифицирован с   Атрибут ScriptServiceAttribute.   Отдельные методы, которые будут вызываться из   Сценарий должен быть квалифицирован с   Атрибут WebMethodAttribute.

см. http://msdn.microsoft.com/en-ca/ библиотека / bb398998.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top