.NET MVC第三章、三种传值方式
目录
.NET MVC第三章、三种传值方式
ViewData
传递方法
前台接收
ViewData测试
ViewBag
传递方法
前台接收
ViewBag测试
TempData·支持夸函数
传递方法
前台接收
编辑TempDate测试
ViewData
ASP.NET MVC 5源代码中ControllerBase类中ViewData属性的定义:
public ViewDataDictionary ViewData { get; set; }
可以看到是字典类型的,属性值object类型
public class ViewDataDictionary : IDictionary<string, object>{}
传递方法
代码语言:javascript复制ViewData["msg"] = "key_value的方式传值";
前台接收
代码语言:javascript复制@ViewData["msg"]
直接获取即可,很方便。
ViewData测试
可以看到后台传递过来的msg信息。
ViewBag
ViewBag对象是ASP.NET MVC 3提供的功能,它被声明为一个dynamic类型。
代码语言:javascript复制ASP.NET MVC 5源代码中声明如下: dynamic类型的变量都会编译为object类型的变量。因此,dynamic类型只存在于编译时刻,而不存在于运行时刻。
[Dynamic]
public dynamic ViewBag { get; }
传递方法
代码语言:javascript复制ViewBag.Info = "我是通过ViewBag传递的值";
前台接收
代码语言:javascript复制@ViewBag.Info
ViewBag测试
传递以及取值成功
TempData·支持夸函数
ViewData属性与ViewBag属性无法跨Action方法传递数据,当需要在多个Action方法之间传递数据时,可采用TempData属性。
代码语言:javascript复制ASP.NET MVC 5源代码中声明如下:
public TempDataDictionary TempData { get; set; }
代码语言:javascript复制TempDataDictionary类的定义如下:
public class TempDataDictionary: IDictionary<string, object>{}
注:TempData属性是将数据保存在Session中。
传递方法
代码语言:javascript复制TempData["cors"] = "TempData支持夸函数传参。";
为了测试夸方法,需要单独创建一个页面。
页面位置
前台接收
代码语言:javascript复制@TempData["cors"]
TempDate测试
可以看到传递成功。