亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET MVC 3中ViewBag, ViewData和 TempData

發布時間:2020-07-23 09:35:54 來源:網絡 閱讀:2080 作者:cnn237111 欄目:編程語言

ViewBag, ViewData十分類似,都可用于把數據從controller傳遞到view。

ViewBag是WebViewPage中的一個屬性,它的類型是dynamic。dynamic類型可以理解為,編譯器在編譯到這種類型時,會跳過類型檢查,而在運行時做這些事情。

ViewData也是WebViewPage類中的一個屬性,但他的類型是ViewDataDictionary。從內部實現上,ViewBag屬性是按照鍵值對那樣存放在ViewData中的,因此也可以通過方為ViewData中值來訪問ViewBag的值,他們指向的引用是同一個的。但是區別在于,ViewData的寫法是按照序列訪問那樣,通過索引訪問,而ViewBag是通過屬性訪問。事實上,在編譯階段,編譯器無法知道ViewBag所給的屬性是否存在,這都是在運行時決定的。舉個例子,ViewData["Index"]可以寫成:ViewBag.Foo,而不需要擔心編譯時錯誤。

我們可以通過下面的例子來驗證ViewBag和ViewData其實指向的對象是同一個。

@{

ViewBag.XXX = new StringBuilder("222");

ViewData["XXX"] = new StringBuilder("333");

}

<pre>

ViewBag的類型是 @ViewBag.GetType();

ViewData的類型是 @ViewData.GetType();

ViewBag.XXX 的值是 @ViewBag.XXX

ViewData["XXX"]的值是 @ViewData["XXX"]

@(ViewBag.XXX == ViewData["XXX"])

@(ViewBag.XXX.Equals(ViewData["XXX"]))

@ViewBag.XXX.GetHashCode()

@ViewData["XXX"].GetHashCode()

</pre>

得到的結果如下:

ASP.NET MVC 3中ViewBag, ViewData和 TempData

可以看到對ViewData["XXX"]做更改,會影響到ViewData.XXX。后續的例子有證明了他們是指向同一個引用的。

在使用ViewBag的時候,有一個好處就是不需要做類型轉換。因為是dynamic類型,只要保證在運行時的類型正確既可以了。舉個例子:

@{

ViewBag.XXX = new List<int>{1,2,3};

ViewData["YYY"] = new List<int> { 3, 4, 5 };

foreach (var i in ViewBag.XXX)

{

@i

}

foreach (var i in ViewData["YYY"] as List<int>)

{

@i

}

}

無論是ViewBag還是ViewData,都僅僅對當前的請求有效,他們的生命周期很短,無法存在于多個請求中。

TempData的出現可以存在多個請求,但是,也被限制于當前請求和下一次請求(通常是Redirect)。它的內部實現是使用了Session。

public void Index(){

TempData["text"] = "123456";

RedirectToAction( "Test1" );

//RenderView("Index");

}

public void Test1(){

string text = TempData["text"] as string;

RenderView("Test1");

}

public void Test2(){

string text = TempData["text"] as string;

RenderView("Test2");

}

如上面的例子,Index中的TempData可以在跳轉到Test1的時候獲得,但不能在Test2中獲得。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滨州市| 大理市| 华容县| 泰宁县| 岑巩县| 藁城市| 黄陵县| 进贤县| 永泰县| 永修县| 象山县| 大同市| 永定县| 迁安市| 鹰潭市| 佛坪县| 板桥市| 临沭县| 江安县| 杭锦旗| 佛山市| 大荔县| 永善县| 温宿县| 瑞丽市| 大方县| 墨竹工卡县| 来宾市| 嫩江县| 阜新市| 沧源| 三穗县| 东阿县| 合山市| 合江县| 舞阳县| 宣武区| 改则县| 商水县| 噶尔县| 怀来县|