ViewBag和ViewData的用法和區別

2021-10-09 00:02:18 字數 1227 閱讀 1014

viewbag和viewdata的用法和區別

一、viewbag的定義

public dynamic viewbag

return _dynamicviewdata;

}}二、viewdata的定義

public viewdatadictionary viewdata

return _viewdata;

}set

}三、viewdata與viewbag的區別

1、viewdata是字典型別,賦值方式用字典方式,通過key值讀取對應的value, viewdata["myname"]

2、viewbag是動態型別,使用時直接新增屬性賦值即可 viewbag.myname

3、viewbag和viewdata只在當前action中有效,等同於view

4、viewdata和viewbag 中的值可以互相訪問,因為viewbag的實現中包含了viewdata

viewdata

參考的viewbag和viewdata的用法和區別

viewdata是乙個特殊的字典類的名稱,我們可以用標準的字典語法進行修改或賦值,比如:

viewdata["name"] = "jack";

viewbag

viewbag 是asp.net mvc3中對viewdata的一種動態封裝,用法更方便。他的賦值方法是:

viewbag.name = "jack";

也就是說viewdata["name"] 和 viewbag.name是一樣的效果。

viewbag和viewdata的區別

雖說用viewbag來代替viewdata使用著更快捷,但是相對於viewdata來說,viewbag還是有一些不能用的地方:

1.viewbag要訪問的必須是乙個有效的識別符號,否則無效。比如:viewdata["query income"]就不能使用viewbag來訪問。因為「query income」中有無效的c#識別符號 空格。

2.動態值不能作為乙個引數傳遞給擴充套件方法。因為c#為了選擇正確的擴充套件方法規定必須標明每乙個引數的型別。如果引數中有任何乙個引數是動態的就無法通過編譯。比如:

@html.textbox("name",viewbag.name)就會編譯失敗。

解決方法:

① 將viewbag.name替換為viewdata["name"];

② 把viewbag.name替換為乙個具體型別的引數:(string)viewbag.name;

ViewBag的區別和使用

viewbag 和viewdata的區別 viewbag 它是 dynamic 型別對像,asp.net mvc3 才有,基於asp.net 4.0與.net framework,viewbag 比viewdata慢,在viewpage中查詢資料時不需要型別轉換,viewdata 它是key val...

ViewBag和ViewData的使用

使用viewbag和viewdata分別向檢視頁面各傳遞乙個字串型別的值 var list db.students var loginname loginname viewdata loginname loginname 將變數的值放入到viewdata中,viewdata是以鍵值對 viewbag...

ViewBag 和 ViewData 的用法和區別

所謂的viewbag是asp.net mvc3 中對viewdata 的 一種動態封裝,用法更方便。它賦值的方法 viewbag.name jack 其實viewbag name 和viewdata.name是一樣的效果,只是方法不一樣。viewdata 是乙個特殊的字典類的名稱,我們可以用標準語法...