2008-12-03 134 views
0

我會(如問題狀態)喜歡進行異步調用,最好使用ASP.net AJAX。從ASP.Net進行異步WebService調用MVC

用於將WebMethod的代碼如下所示:

[WebMethod] 
public void SendMail(string name, string email, string subject, string body) 
{ 
    MailMessage toSend = new MailMessage(email, [email protected], subject, body); 
    var smtp = new SmtpClient(); 
    smtp.Send(toSend); 
} 

視圖上的字段,這並不奇怪:姓名,電子郵件,主題,正文。

在我試圖做到這一點時,我一直無法進入WebMethod。該服務的參考資料已到位,所以至少我沒有搞砸了。

感謝您的幫助...

回答

0

Here你可以找到調用與AJAX異步方法在ASP.NET MVC與元素,如

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

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

<% } %> 

您可以在控制器方法收到PARAMS,並從那裏調用Web服務的一個例子。

3

這不是您的問題的答案,而是一個警告。我正在研究這種方法並思考:「嗯,我不知道ASP.NET是否在意這個Web方法的調用是來自您的網站還是其他地方?」一個快速的谷歌搜索引導我相信,沒有任何檢查,以確保一些沖洗不使用您的網絡方法爲自己的惡意願望(here's a blog post talking about this)。

因此,在你做這個工作之前,你可能想要考慮如何防止某人劫持你的webmethod給我發送偉哥電子郵件。因爲如果我從你的網站收到偉哥郵件,我不會對你感到高興。

+0

嗯,我還沒有考慮,感謝您的擡頭。你有什麼建議嗎? – KevDog 2008-12-03 21:54:46

+0

我仔細看了一下你建立的鏈接。該調用不在頁面後面的代碼中,而是在單獨的Web服務的.asmx文件中。我會做更多的閱讀,看看是否適用相同的警告。 – KevDog 2008-12-03 22:25:51

-3

根據MSDN庫

爲了使Web服務從腳本訪問 ,它必須是一個 的.asmx Web服務,其Web服務 類是有資格與 ScriptServiceAttribute屬性。 要從 腳本調用的各個方法必須使用 WebMethodAttribute屬性進行限定。

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