ViewBag和ViewData的用法和区别
作者:欧日鑫
撰写时间:2020年8月8日
一、ViewBag的定义
public dynamic ViewBag {
get {
if (_dynamicViewData == null) {
_dynamicViewData = new DynamicViewDataDictionary(() => ViewData);
}
return _dynamicViewData;
}
}
二、ViewData的定义
public ViewDataDictionary ViewData {
get {
if (_viewData == null) {
SetViewData(new ViewDataDictionary());
}
return _viewData;
}
set {
SetViewData(value);
}
}
三、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"