2011-11-14 26 views
1

我注意到在某些代碼中[WebMethod]屬性用於aspx頁的代碼隱藏文件。aspx和asmx文件中的「WebMethod」屬性有什麼區別?

但我記得它,這個屬性是用來公開Web服務,它經常在asmx文件中看到。

那麼這兩種用法有什麼區別?

謝謝。

+0

類似問題http://stackoverflow.com/questions/673075/net-ajax-calls-to-asmx-or-aspx-or-ashx – AlphaMale

+0

謝謝,我正在閱讀該線程。這很有幫助。 – smwikipedia

回答

2

如果該方法也是靜態的,則可以通過javascript/ajax調用該方法,而無需整頁回發。 請注意,您的ScriptManager需要將EnablePageMethods屬性設置爲true。

+0

是的,我用這個屬性看到的方法是靜態的。那是一種Ajax?順便說一句,如果它不是靜態的呢? – smwikipedia

+0

是的,它可以通過JavaScript使用,例如http://ajaxtoolkit.net/AutoComplete/AutoComplete.aspx使用該想法... – misha

1

後面代碼中的Webmethods用於AJAX調用。如果您使用的是jquery或類似的,並且您需要在頁面上實現ajax功能,那麼您將必須使用WebMethod屬性定義您的方法,並且必須使其成爲公共靜態。那麼只有它會起作用。

我覺得WebMethod的概念已經從Web服務中獲得了。由於asp.net沒有任何定義的方式來處理Ajax請求到後面的頁面方法,所以他們已經擴展了該功能以用於方法後面的代碼。

保持手錶是公共靜態方法,你可能無法在這裏使用你的頁面類的內部屬性。所以,你需要處理這個問題。

+0

如果我們真的想要AJAX,爲什麼不寫一些asmx Web服務或使用WCF和讓Javascript來調用呢?爲什麼我們必須在頁面類中包含殘缺的靜態方法? – smwikipedia

+2

可能有多種原因。 1)功能非常小,你不想有一個服務電話。因爲當您公開服務呼叫時,您必須添加新的Web方法/操作合同。 2)由於涉及服務通信的層次,服務調用很昂貴並且需要更多時間來返回(假設我們必須使用相同的邏輯)。此外,Web方法背後的代碼駐留在同一個應用程序池中,因此調用非常快捷。 - 那是我的感受。其他人可能有不同的意見。 – saarthak

相關問題