viewstate是個好東西,是asp.net的一大創舉,給web開發帶來了極大的便利,然後這種便利是一種雙刃劍,尤其是在前台頁面,大多數前台頁面都是用來展示列表資料,和使用者互動的地方現在大都採用ajax代替了,在這種情況下viewstate已經沒有什麼用武之地了。因此禁用viewstate是必須的。
一般禁用viewstate的方法就是在頁面頂端的page指令中加上enableviewstate="false",但是很不幸頁面中還是用少量的頑固分子
如何將這個剩餘的viewstate清理乾淨呢,如果稍微留心一下就會注意到當我們新建乙個aspx頁面的時候,頁面的html**中預設是有乙個runat="server" 的form,恩,現在就要考慮一下form的作用,他是用來提交表單的,但是大多數前台頁面更本不用提交乙個表單,既是需要的地方,在ajax盛行的年代,我們也早就不用原始的把乙個頁面post到伺服器端了。那麼按這樣說,這個form根本就沒有用的。那好,現在我們就把這個form去掉,這樣再來看我們頁面的html**,你會驚奇的發現,頁面很乾淨,沒有了form,那「障眼」的viewstate也不見了(既是你沒有在頂端的page指令中加上enableviewstate="false")!
刪除了帶runat="server" 的form之後,在使用控制項的時候會有很多限制,比如這是如果你放乙個textbox到頁面,然後執行頁面,這是頁面會報錯:「型別「textbox」的控制項「textbox1」必須放在具有 runat=server 的窗體標記內。」 除了textbox,還有哪些控制項也是必須放在runat=server的窗體內呢?如果實驗幾個控制項,你就會發現,凡是能夠被表單(form)提交的(post)html元素的控制項都是必須放在具有 runat=server 的窗體標記內。我們知道asp.net控制項最終還是要生成html元素的,不管再複雜的控制項。比如乙個textbox控制項在頁面中生成的就是的html元素,而這個輸入框是可以被form提交的。資料控制項中只有repeater,listview,datalist可以沒有帶runat="server" 的form,當然在三個控制項的模板裡面一樣不能出現類似textbox的控制項。前台展示列表的話repeater足矣!
這樣當你開啟.net頻道
,滬江**
檢視它們的html原始碼的時候就不會驚訝為什麼找不到viewstate呢?難道是生成了靜態頁面,等等。。。
從輸入URL到頁面載入完的過程
乙個http請求的過程 dns lookup 先獲得url對應的ip位址 socket connect 瀏覽器和伺服器建立tcp連線 send request 傳送http請求 content download 伺服器傳送響應 如果下到物理層去講就有點耍流氓了,如果這些你還認可這幾個步驟的話,我們就...
讓DOM從頁面中消失的幾種方法
一般最先想到的就是這兩種 1.display none 將整個元素隱藏,並且不會佔據任何的空間 2.visibility hidden 元素的內容不可見,但是元素仍然保持原來的位置和大小 3.設定它的位置,讓其消失不見 position absolute或fixed,用z index遮蓋。4 ove...
從輸入url到載入完頁面發生了什麼?
我願稱之為絕殺面試題,計算機網路方面的知識甚至瀏覽器的渲染機制,同時考察知識面的廣度和深度,面試官問這乙個題就足以探清你這方面知識的掌握情況。另一方面了解這其中的細節,對於前端優化來說也至關重要,本文也只能盡自己所了解到的進行總結。從輸入url到載入完頁面主要發生了以下過程 不考慮cdn和資源的強快...