91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

九江县| 大悟县| 科技| 乌兰县| 城固县| 广安市| 漳浦县| 工布江达县| 琼结县| 新建县| 天长市| 汤原县| 邵阳县| 甘肃省| 莆田市| 清涧县| 敦煌市| 新绛县| 瑞昌市| 麻城市| 张家界市| 舞钢市| 西平县| 瑞安市| 龙州县| 安远县| 太原市| 阿瓦提县| 龙里县| 齐河县| 定结县| 鹤壁市| 夹江县| 临泉县| 遵化市| 洛宁县| 酒泉市| 邯郸市| 慈溪市| 成都市| 宜宾市|