<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Hopes

    Start Here..

     

    ASP.NET中PostBack和ViewState

    ASP.NET中PostBack和ViewState

    ASP.NET中PostBack和ViewState

    關于PostBack,我曾經也寫過一篇博客《深入理解doPostBack》。在這篇文章里有對PostBack進行了一些研究,現在看來研究的還是不夠深入。不過從原理上來說,ASP.NET WebForm中的一般WEB控件(為什么是一般呢?因為如Button等少數控件不是調用doPostBack方法的)在向服務器回發請求時,調用的就是doPostBack方法,通過表單提交的方式來向服務器提交請求。而WebForm所提供的WEB事件模型也是以doPostBack這個方法為基礎的,往服務器傳送的兩個隱含變量(EVENTTARGET,EVENTARGUMENT)就是PostBack事件分發的根據。EVENTTARGET保存著向服務器發出PostBack請求的控件ID,ASP.NET根據這個ID就可以找到它所對象的服務器端控件的實例。EVENTARGUMENT保存的是當前PostBack的一些參數。除此之外,PostBack還需要什么條件呢?

    在前段時間關于WebForm和MVC的討論中,有人提到禁用了ViewState,也就無法使用了PostBack。這也給我提了一個醒,確實ViewState與PostBack有非常緊密的關系,在大多數情況下,如果控件的狀態是動態維護的。比如說DropDownList的Items是通過下面的代碼添加的:

    1. protectedvoidPage_Load(objectsender,EventArgse)  
    2. {  
    3. if(!this.IsPostBack)  
    4. {  
    5. DropDownList1.Items.Add(newListItem("1","Value1"));  
    6. DropDownList1.Items.Add(newListItem("2","Value2"));  
    7. }  

    而不是在HTML頁面上靜態添加(或是在OnInit事件之前添加,不能加IsPostBack的判斷),這時,如果禁用ViewState,那么DropDownList的SelectedIndexChanged事件將不會被正常觸發,并且DropDownList的Item項將會被清空。所以從這個角度來說,如果要使用PostBack,那么ViewState勢必不能被禁用。

    除此之外,PostBack還有一些不足:

    1)頁面在PostBack后,刷新頁面時會出現非常不好的用戶體驗。

    2)搜索引擎的不友好。

    3)在編寫服務器端代碼時要特別的小心,特別是對IsPostBack的判斷。

    盡管PostBack在WebForm的事件機制占有舉足輕重的地位,它出現極大的方便了我們以事件驅動方式來開發WEB應用。從短期的入門應用中確實有它重要的意義。但從現實出發,還是必須得根據不同的應用場合有先擇性的使用。在網站前臺型應用中,應該消滅一切可以消滅的PostBack。因為做為前臺,它的作用就是展示還有查詢。而如果對查詢,分頁等操作使用PostBack的話,一方面搜索引擎的不友好,另一方面給大多數用戶帶來非常不好的用戶體驗,增加了整個頁面的請求時間。同時,它們所傳的參數又非常有限,這情況下就需要使用鏈接的方式來傳參。

    對于應用型的后臺開發,由于在提交數據時可能會有比較多的表單數據。這時,這時結合DetailView或FormView,使用PostBack來提交數據又可以給我們帶來非常大的方便,這種情況下我們不禁用ViewState也沒有關系,ViewState并不會很大,而至于刷新的問題,我們可以使用UpdatePanel來幫助解決。但是如果對于瀏覽數據仍然是要特別注意,特別是有GridView的頁面進行PostBack數據查詢,分頁時,盡量都能改成鏈接的方式來實現。

    總體來說,PostBack的使用還是要特別注意,能少用就少用,但有時用它確實也會給我們帶來非常大的方便。對于應用型的后臺開發,如果使用EXT的話,那么就是可以完全摒棄WebForm,或MVC了。因為它有自己一整套完整的開發流程,從目前來看,確實是一種全新的體驗。

    連續兩篇討論的PostBack和ViewState,可能結論都是偏向消極的。它們的存在有其重要意義的同時,難免會帶來一些負面影響,但這種影響的代價在很多情況下過大而導致大多數人的反唇相譏。在軟件工程中,衡量軟件的標準不是越快越好,而是在用戶接受的合理的時間范疇內,得到正確的結果,并且它所花費的代價(包括開發,維護,部署等成本)是最少的。我相信只要使用得當,它們還是可以充分發揮它們的作用的。

    從極端的來說,去掉PostBack和ViewState后,WebForm仍然還是WebForm。它只是少了兩樣兩把利弊同樣明顯的雙刃劍,它余下的事件機制,組件化開發,頁面模型仍然是我們進行WebForm開發最有力的武器

    posted on 2012-10-27 21:55 ** 閱讀(215) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    你好!

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    收藏夾

    C#學習

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: a一级毛片免费高清在线| 国产产在线精品亚洲AAVV| 久久亚洲AV无码精品色午夜麻豆 | 你懂的在线免费观看| 免费成人福利视频| 亚洲A∨午夜成人片精品网站| 亚洲欧洲日产国码久在线观看| 亚洲中文精品久久久久久不卡| 免费视频成人手机在线观看网址| 国产精品免费_区二区三区观看| 亚洲老妈激情一区二区三区| 亚洲狠狠色丁香婷婷综合| 19禁啪啪无遮挡免费网站| 丁香五月亚洲综合深深爱| 亚洲欧美综合精品成人导航| 永久黄色免费网站| 久久精品国产亚洲av麻豆图片| 免费高清国产视频| 亚洲综合网美国十次| 在线看片免费人成视频福利| 亚洲av无码天堂一区二区三区| 国产成人精品日本亚洲直接| 99久久综合精品免费| 亚洲中文字幕无码久久精品1| 亚洲免费人成在线视频观看| 亚洲精品熟女国产| 午夜高清免费在线观看| 亚洲日本国产乱码va在线观看| 日韩精品免费视频| 亚洲无人区午夜福利码高清完整版| 亚洲精品动漫免费二区| 久久青草免费91观看| 亚洲国产精品成人久久蜜臀 | 免费一级毛suv好看的国产网站 | 亚洲AV无码成人精品区在线观看| 精品免费AV一区二区三区| 日韩精品内射视频免费观看| 亚洲中文久久精品无码1| 亚洲av区一区二区三| 91精品国产免费久久国语蜜臀| 亚洲国产精品久久|