我有一個Web應用程序,需要訪問代碼背後的方法以及JavaScript方法。對於這個特定的實現,從程序流的角度來看,它們被調用的順序並不重要。從背後的代碼調用javascript與從javascript調用代碼
我在尋找洞察時,這將是適合使用後面的代碼來調用javascript和當它背後從代碼中調用JavaScript將是適當的。在推進實施之前,我是否應該注意到這種做法會產生什麼影響?
有沒有一種最佳實踐的方式來做到這一點還是非常具體的實際執行?
我有一個Web應用程序,需要訪問代碼背後的方法以及JavaScript方法。對於這個特定的實現,從程序流的角度來看,它們被調用的順序並不重要。從背後的代碼調用javascript與從javascript調用代碼
我在尋找洞察時,這將是適合使用後面的代碼來調用javascript和當它背後從代碼中調用JavaScript將是適當的。在推進實施之前,我是否應該注意到這種做法會產生什麼影響?
有沒有一種最佳實踐的方式來做到這一點還是非常具體的實際執行?
讓我們來談談從JavaScript調用服務器端代碼。這是通過使用Ajax來執行的。您可以在Web服務中調用Web方法,如果使用特殊屬性修飾它們,也可以調用Page Methods。
從JS調用服務器側的主要原因是用於使用Ajax功能。
從服務器端調用JS基本上是當你插入JavaScript代碼放到頁面,然後在客戶端代碼將在一些動作被調用。
UPDATE:
可能有一些其他的原因,也是在那裏你需要調用服務器端JavaScript中這可以手動提交使用形式document.form.submit()。但我會說大多數時候90%以上的你調用服務器端代碼來使用ajax異步執行一個動作。
對於第二種情形,當你想添加一個確認對話框成包含在GridView控件裏的按鈕一個常見的例子就可以了。在這種情況下,您將在gridview控件的databound事件中添加代碼,並將javascript代碼添加到gridview中包含的按鈕。最後,當gridview被呈現時,gridview中的按鈕會將javascript附加到它們上,當用戶單擊按鈕時,彈出確認框。另一種情況可能是您想在回發發生後打開新的彈出窗口。
你的意思是「代碼隱藏」在服務器代碼,對不對? JavaScript代碼無法調用服務器代碼。通常,您的服務器代碼會輸出JS變量,JS函數或任何其他客戶端代碼在編譯時無法確定。
編輯:爲了澄清,JS代碼可以通過Ajax發送到服務器,這確實是「調用服務器代碼」。我以爲你問的是直接調用JS的代碼隱藏功能,因爲它們在Visual Studio中「在同一頁面上」,除非你將這些功能公開爲支持Ajax並使用某些客戶端Ajax機制來調用,否則這是不可能的他們。
爲了最好地回答你的問題,具體的使用案例會有所幫助。這樣做沒有一個普遍的正確或錯誤的理由 - 取決於你想要完成的事情。
正在考慮的一個設置已經過測試,它的工作原理是onclick事件執行一個javascript函數,然後在該頁面的代碼隱藏中調用WebMethod。也許我不明白你的意思,但這似乎是一個選擇? – mwright 2010-03-08 16:33:40
實際上,JavaScript代碼可能會對服務器執行回調。一種方法是使用ICallBackEventHandler接口(http://msdn.microsoft.com/en-us/library/system.web.ui.icallbackeventhandler。aspx) – 2010-03-08 16:53:47
是的,你當然可以使用任意數量的Ajax方法從JS代碼執行到服務器的帖子。這不同於「調用JS的後臺頁面代碼」(本身不可能) - 您必須將方法明確地公開爲服務器上啓用Ajax的方法,或者將爲此目的而構建的框架功能用作由@Tim Goodman提及。 – 2010-03-08 17:42:29
你想說當你需要某種類型的Ajax功能時,使用Javascript調用服務器端代碼嗎?這是唯一的時間還是有其他考慮? 另外,你能否詳細說明你對第二種情況的討論?我瞭解如何,但何時/爲什麼要將JavaScript注入頁面供以後調用? – mwright 2010-03-08 16:48:02
我編輯了我的答案! – azamsharp 2010-03-08 16:59:16