成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談ASP.NET中ViewState與ViewData的區(qū)別

開發(fā) 后端
筆者在項(xiàng)目開發(fā)中新同事問到ASP.NET WebForm模式中的ViewState與ASP.NET MVC模式中的ViewData不是一樣的嗎?特寫下此文為大家講解。

在WebForm的代碼頁面(如.aspx.cs)中定義ViewState:

ViewState["test"] = "abc";

在顯示頁面(如.aspx)中就可以用:

< %=ViewState["test"] %>

進(jìn)行輸出

在MVC中的Controller中定義:

ViewData["test"] = "abc";

同樣也可以在視圖而中用:

< %=ViewData["test"] %>

進(jìn)行輸出

ViewState與ViewData,這有區(qū)別嗎?

有人可能會說在WebForm模式中如果設(shè)置了EnableViewState="false",那么ViewState就不能用了,真的這樣嗎?經(jīng)測試發(fā)現(xiàn)無論EnableViewState為true或false,上面給的<%=ViewState["test"] %>都是可以正常輸出值的

那是不是說在WebForm中就可以像MVC中那樣用ViewState來代替ViewData了呢?

MSDN對ViewState的定義:

獲取狀態(tài)信息的字典,這些信息使您可以在同一頁的多個(gè)請求間保存和還原服務(wù)器控件的視圖狀態(tài)。

代碼定義是這樣的:

protected virtual StateBag ViewState { get; }

可以看到此屬性中只有g(shù)et方法,也就是說此屬性是只讀的,可能你會說上面用的:ViewState["test"] = "abc";不是在為它賦值嗎?這是因?yàn)閂iewState是StateBag 類的一個(gè)實(shí)例,而StateBag類是一個(gè)實(shí)現(xiàn)了字典接口,所以ViewState是可以存儲鍵值對形式的數(shù)據(jù)的,只是你不能做類似這樣的操作:ViewState = new StateBag...因ViewState 是只讀的,而MVC中的ViewData是可讀寫的,其代碼定義為:public ViewDataDictionary ViewData { get; set; }

所以區(qū)別一就是:ViewState是只讀的,ViewData是可讀寫的(可被重新定義)

區(qū)別二:ViewData可用于一次http請求中的所有視圖頁,如:.aspx/.ascx...,而ViewState只能用于當(dāng)前后端代碼文件所在的前端顯示頁。

比如:頁面control.ascx存在于頁面default.aspx中,那么在default.aspx.cs中定義的ViewState["test"]在control.ascx是取不到的。

區(qū)別三:ViewState主要用來記錄服務(wù)器控件的狀態(tài)信息,asp.net引擎會自動(dòng)填充服務(wù)器控件的狀態(tài)信處到里面,所以***不要使用ViewState存放自己的值。

區(qū)別四:為了保證ViewState可以正確記錄服務(wù)器控件的狀態(tài)信息,ViewState中的值應(yīng)該都是可以轉(zhuǎn)為字串形式的(可序列化),而ViewData是可以用來保存各種類型的值的。

我目前就發(fā)現(xiàn)這幾點(diǎn),希望大家可以繼續(xù)補(bǔ)充,不正確的地方也請指正,謝謝。

【編輯推薦】

  1. ASP.NET 3.5圖表控件親密接觸
  2. 自己動(dòng)手實(shí)現(xiàn)ASP.NET的MVC框架
  3. ASP.NET中防止用戶多次登錄的方法
  4. 用XML+XSLT+CSS+JQuery組建ASP.NET網(wǎng)站
  5. 淺談如何在ASP.NET中了解LINQ語句性能
責(zé)任編輯:彭凡 來源: cnblogs
相關(guān)推薦

2009-08-04 12:29:57

ViewState概念ASP.NET

2009-07-20 15:19:52

ViewState本質(zhì)ASP.NET

2009-08-04 17:20:37

PostBack和ViASP.NET

2009-07-28 16:42:02

ViewState技術(shù)ASP.NET應(yīng)用

2009-08-04 17:00:09

ASP.NET禁用Vi

2009-07-28 13:39:44

加載ViewStateASP.NET

2009-07-27 13:01:28

TreeViewASP.NET

2009-08-05 15:01:04

ASP.NET應(yīng)用Vi

2009-07-29 09:38:06

Web開發(fā)ASP.NET

2011-06-08 11:36:16

ASP.NETrender

2009-07-20 15:30:11

ASP.NET應(yīng)用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-24 10:52:42

ASP.NET ISA

2009-06-15 10:57:51

FluentHtmlASP.NET MVC

2009-07-23 11:11:41

2009-01-16 13:17:16

AjaxASP.NET.NET

2009-07-28 18:00:11

ASP.NET程序

2009-07-21 14:16:02

ASP.NET管道優(yōu)化

2011-08-23 10:58:59

2009-07-23 15:24:37

ASP.NET Ima
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩久久久久 | 亚洲二区在线观看 | av在线播放网址 | 亚洲综合日韩精品欧美综合区 | 久久免费国产 | 国产视频在线一区二区 | 亚洲精品日韩综合观看成人91 | 国产精品网址 | 97精品国产手机 | 国产精品精品久久久 | 狠狠久| 国精产品一品二品国精在线观看 | 欧美一级视频在线观看 | 一级aaaa毛片 | 亚洲国产欧美日韩 | 好姑娘影视在线观看高清 | 国产福利在线播放 | 日本三级线观看 视频 | 国产精品一卡 | 韩国久久| 超碰av人人 | av性色全交蜜桃成熟时 | 日韩精品中文字幕一区二区三区 | 毛片免费观看 | 亚洲精品在线观看视频 | 中文字幕av免费 | 国产在线精品一区二区三区 | 国产精品欧美一区二区三区不卡 | 狠狠操狠狠| 久久久精彩视频 | 毛片a | 国产成人在线看 | 国产精品一区二区视频 | 亚洲黄色网址视频 | 99精品99| 男人午夜视频 | 日韩高清中文字幕 | 午夜精品一区二区三区在线视 | 成人激情视频网 | 91免费观看 | 亚洲精品粉嫩美女一区 |