我注意到在某些代碼中[WebMethod]屬性用於aspx頁的代碼隱藏文件。aspx和asmx文件中的「WebMethod」屬性有什麼區別?
但我記得它,這個屬性是用來公開Web服務,它經常在asmx文件中看到。
那麼這兩種用法有什麼區別?
謝謝。
我注意到在某些代碼中[WebMethod]屬性用於aspx頁的代碼隱藏文件。aspx和asmx文件中的「WebMethod」屬性有什麼區別?
但我記得它,這個屬性是用來公開Web服務,它經常在asmx文件中看到。
那麼這兩種用法有什麼區別?
謝謝。
如果該方法也是靜態的,則可以通過javascript/ajax調用該方法,而無需整頁回發。 請注意,您的ScriptManager
需要將EnablePageMethods
屬性設置爲true。
是的,我用這個屬性看到的方法是靜態的。那是一種Ajax?順便說一句,如果它不是靜態的呢? – smwikipedia
是的,它可以通過JavaScript使用,例如http://ajaxtoolkit.net/AutoComplete/AutoComplete.aspx使用該想法... – misha
後面代碼中的Webmethods用於AJAX調用。如果您使用的是jquery或類似的,並且您需要在頁面上實現ajax功能,那麼您將必須使用WebMethod屬性定義您的方法,並且必須使其成爲公共靜態。那麼只有它會起作用。
我覺得WebMethod的概念已經從Web服務中獲得了。由於asp.net沒有任何定義的方式來處理Ajax請求到後面的頁面方法,所以他們已經擴展了該功能以用於方法後面的代碼。
保持手錶是公共靜態方法,你可能無法在這裏使用你的頁面類的內部屬性。所以,你需要處理這個問題。
如果我們真的想要AJAX,爲什麼不寫一些asmx Web服務或使用WCF和讓Javascript來調用呢?爲什麼我們必須在頁面類中包含殘缺的靜態方法? – smwikipedia
可能有多種原因。 1)功能非常小,你不想有一個服務電話。因爲當您公開服務呼叫時,您必須添加新的Web方法/操作合同。 2)由於涉及服務通信的層次,服務調用很昂貴並且需要更多時間來返回(假設我們必須使用相同的邏輯)。此外,Web方法背後的代碼駐留在同一個應用程序池中,因此調用非常快捷。 - 那是我的感受。其他人可能有不同的意見。 – saarthak
類似問題http://stackoverflow.com/questions/673075/net-ajax-calls-to-asmx-or-aspx-or-ashx – AlphaMale
謝謝,我正在閱讀該線程。這很有幫助。 – smwikipedia