摘要 雖然ASP.NET的伺服器控制項一直被大家所詬病,但是用戶控制項(ACSX)在某些場景下還是非常有用的。 在一些極特珠的情況下,我們會使用JavaScript動態的構建頁面中的控制項,但假設遇到了我要用JavaScript構建一個服務端控制項、用戶控制項時,該怎麼辦? 我們常常說,服務端控制項運行在服端器 ...
摘要
雖然ASP.NET的伺服器控制項一直被大家所詬病,但是用戶控制項(ACSX)在某些場景下還是非常有用的。
在一些極特珠的情況下,我們會使用JavaScript動態的構建頁面中的控制項,但假設遇到了我要用JavaScript構建一個服務端控制項、用戶控制項時,該怎麼辦?
我們常常說,服務端控制項運行在服端器上,那麼這話是什麼意思呢?
服務端控制項,其本質是一構建HTML語句的封裝,以事先編排好的方式,生成一套HTML並通過Http協議返回給客戶端。因此,我們所寫的服務端控制項,在響應HTTP請求時,早已不存在了。——這就叫運行在伺服器上
即然如此,那麼客戶端自然沒有解析一個服務端控制項的可能。
根據上面的原理,我們可以得知,直接通過JavaScript向body中輸出一個服務端控制項毫無意義。
那麼我們換一個思路,即然服務端控制項的構建一定要通過WEB伺服器,那麼我們可不可以通過一次HTTP請求,並且在不破壞當前面頁的情況下,得到服務端控制項所轉換後的HTML原碼呢?
有了這個思路,那麼解決方案就很簡單了——iframe
我們可以單獨設立一個ASPX頁面,該頁面的BODY上主要就是服務端控制項,然後通過IFRAME的載入,將這個服務端控制項顯示在了當前的頁面中。
當然,這隻是一種效果,它並沒有真正意義上用JavaScript構建了一個服務端控制項。而是構建了一個只包含了服務端控制項的iframe。
如果變通一下的話,可以通過一些JavaScript代碼,將這個iframe中的所有元件,添加到主頁面里,並移除iframe,這樣,就成為了一個整體的頁面,只不過可能會面臨一些控制項ID衝突的結果。
文章為作者原創,轉載請註明出處 http://www.zizhusoft.com/note/show.aspx?id=f562b47a-ddd0-4771-a93d-78e9fdbd7b72 ,謝謝合作