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 是乙個特殊的字典類的名稱,我們可以用標準語法...