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

來源:互聯網
上載者:User
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的設定等,我們將在後面的文章裡一一詳解。

讓我們歡呼吧!
 



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.