MVC中从控制器中获取状态数据的方法
控制器中获取状态数据的方法
1.从上下文对象中获取状态数据:
可以通过一系列的属性可以方便的访问到和请求相关的数据,这些属性包括 Request、Response、RouteData、HttpContext 和 Server,每一个都提供了请求相关的不同类型的信息。下面列出了最常的上下文对象:
2. 使用 Action 方法参数获取状态数据:
注释:易读性强,也方便进行单元测试,Action 方法的参数不允许使用 ref 和 out 参数
3.显式的调用框架的模型绑定(Model Binding)特性:
MVC中的ActionResult对象的介绍:ActionResult 是描述 Action 方法执行结果的对象,它的好处是想返回什么结果就指定对应的返回对象就行,不用关心如何使用Response对象来组织和生成结果。ActionResult 是一个命令模式(把一个请求或者操作封装在命令对象中)的例子,这种模式通过存储和传递对象来描述操作。
MVC中从Action向View中传递参数的几种方式:
- 通过 View Model 对象传递数据给View
- 使用ViewBag、ViewData 和 TempData的相关属性
ViewBag、ViewData 和 TempData的区别及相同点:
相同点:都是存储少量的数据
区别: a. ViewBag,是一个动态(dynamic)的弱类型,在程序运行的时候解析,是 MVC3 中新增的特性,只在当前的View中有效;
b.ViewData,是一个字典集合,也是只在当前View有效,性能比 ViewBag 高,但是使用的时候需要类型转换;
c.TempData,也是字典集合,一般用于两个请求之间临时缓存内容或页面间传递消息,保存在 Session 中,使用完以后则从 Session 中被清除。
注释:一般在当前 View 中使用 ViewBag 或 ViewData,在两个请求之间传递临时数据用 TempData。由于 TempData 被使用后即被释放,所以如果要二次使用 TempData 中的数据就需要将其存到其他变量中。