質問

私は(質問のとおり)できれば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にアクセスできませんでした。サービス参照が用意されているので、少なくとも私はそれを台無しにしませんでした。

助けてくれてありがとう...

役に立ちましたか?

解決

こちらでは、非同期メソッドの呼び出しの例を見つけることができます

のような要素を持つASP.NET MVCのAJAX
<% using (Ajax.Form("SendMail", new AjaxOptions { UpdateTargetId = "resultDiv" })) { %>

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

<% } %>

コントローラーメソッドでパラメーターを受け取り、そこからWebサービスを呼び出すことができます。

他のヒント

これはあなたの質問に対する答えではなく、警告です。 <!> quot;うーん、このWebメソッドへの呼び出しがあなたのサイトから来たのか、それとも他の場所から来たのかをASP.NETが気にしているのだろうか?<!> quot;簡単なグーグル検索では、いくつかの潅水が彼自身の悪意のある欲求のためにあなたのWebメソッドを使用していないことを確認するチェックはないと信じさせられます(これについて語るブログ投稿)。

それで、これを機能させる前に、誰かがあなたのウェブメソッドをハイジャックして私にバイアグラのメールを送らないようにする方法を考えたいかもしれません。あなたのウェブサイトからバイアグラのメールを受け取ったとしても、私はあなたにあまり満足しないでしょう。

MSDNライブラリによると

  

Webサービスを実行するには   スクリプトからアクセスし、それは   .asmx WebサービスのWebサービス   クラスは   ScriptServiceAttribute属性。   呼び出される個々のメソッド   スクリプトは、   WebMethodAttribute属性。

http://msdn.microsoft.com/en-ca/を参照してください。 library / bb398998.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top