程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET4.0新改進和新特性

ASP.NET4.0新改進和新特性

編輯:關於ASP.NET

Visual Studio 2010 Beta 1和.NET Framework Beta 1已經發布有一段時間了,我也早就該寫這篇文章了。ASP.NET 4.0改進了許多不同的場景集(set of scenarios),如Webforms ,Dynamic Data以及基於AJAX的Web開發。此外還有許多對支撐ASP.NET的核心運行時環境的改進,比如Caching, Session,還有Request/Response對象。

在這篇文章裡,我們將一起檢驗一下對web form的一些改進。這樣的改進很多,我們還將在隨後的文章裡體驗更多這種改進。

使用ViewStateMode屬性控制View State - 性能的增強

在ASP.NET Webform裡最為人所诟病的毛病之一就是不斷增多的viewstate影響到性能。盡管之前就可以把EnableViewState屬性設為true或false ,之後,所以有的controls都默認繼承,並且即使你在control層把它設為啟用,也還是會產生不一致的行為。

在ASP.NET 4.0中 , ViewStateMode屬性有助於確定每個control的Viewstate是否應啟用,禁用或被繼承。例如:

<asp:Panel ID="pnlViewState" runat="server" ViewStateMode="Disabled">
      Disabled: <asp:Label ID="label1" runat="server"  Text="Value set in markup"ViewStateMode="Inherit"  /><br />
           Enabled: <asp:Label ID="label2"  runat="server" Text="Value set in markup"ViewStateMode="Enabled" />
  <hr />
  <asp:button ID="Button1" runat="server"  Text="Postback" />
    </asp:Panel>

後端代碼

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            label1.Text = "Value set in code behind";
            label2.Text = "Value set in code behind";
        }
    }

運行這個頁面,你會發現兩個標簽的初值都被設為了"Value set in code behind",而點擊按鈕(postback)後,label1的值變成了“Value set in markup” ,label2的值則保持不變。正如你所看到的那樣,保存這兩個標簽的面板把ViewStateMode設置為禁用,label1繼承了這一設置(如果沒有指定的話這是默認值),label2則設為了啟用。這就是為什麼label2保持了viewstate而label1丟失了。

雖然可以說之前就可以使用簡便的EnableViewState屬性,但一直就不穩定。想想我們在大多數性能討論會(performance session)上,都會說如果viewstate不能正常運作就先禁用它然後再在control層設為啟動,這個ViewStateMode的引入可以說是有助提升性能的一個很好的結構性變動(architectural change)。

網頁的Meta Keyword和Description - 搜索引擎優化功能

在Visual Studio 2008中,可以通過直接聲明或在程序中使用Page.Title設置網頁的標題。隨著越來越多的流量通過搜索引擎,網頁的標題,關鍵字和描述變得更為重要了。雖然由於關鍵字被人濫用導致許多搜索引擎已經對此忽略不計,但是,頁面的描述還是Google,Bing這些主流搜索引擎賴以鑒別和索引網頁內容的依據。

ASP.NET中的新功能4.0允許用戶像下面這樣通過編程的方式設置頁面描述和關鍵詞: -

protected void Page_Load(object sender, EventArgs e)
    {
        this.Page.Title = "My ASP.NET Blog";
        this.Page.MetaKeywords = "ASP.NET, Web Development, Blog, ASP.NET Blog";
        this.Page.MetaDescription = "This Blog contains posts related to ASP.NET and Web Development";
    }

以上代碼會產生如下標記:

<meta name="keywords" content="ASP.NET, Web Development, Blog, ASP.NET Blog" />

<meta name="description" content="This Blog contains posts related to ASP.NET and Web Development" />

它的運作機制是,如果meta標簽已經出現在HTML標簽裡,那麼只要name屬性相同,程序中設定的內容就都會被填寫到content裡。

雖然這看起來很簡單,但是在要根據某些條件或標准來動態設置它們的情況下,這就很有用了。目前,這些內容都是在HTML代碼裡靜態地設定的。現在,有了Page類這一級的訪問,它們就可以動態地設置了。

對Webforms還有許多其它的改進,比如Routing的增強,ClientID的設置等,我們將在後面的文章裡一一詳解。

讓我們歡呼吧!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved