【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)
本文参考:http://www.cnblogs.com/willick/p/3331521.html
1、继承IController接口,示例代码将当前请求的Controller和Action打印到浏览器:
public class BasicController : IController {public void Execute(RequestContext requestContext) {string controller = (string)requestContext.RouteData.Values["controller"];string action = (string)requestContext.RouteData.Values["action"];requestContext.HttpContext.Response.Write(string.Format("Controller: {0}, Action: {1}", controller, action));} }
稍微复杂一点的系统,继承IController是需要做许多工作的,不建议直接继承IController接口。
2、MVC 框架的 System.Web.Mvc.Controller 类,提供了足够实用的特性来方便我们对请求的处理和返回结果。它提供了一下几个关键的特性:
- Action方法:一个 Controller,它的行为被分为多个方法,通常一个方法对应着一个请求,并且可以通过方法参数来取得请求传递过来的数据。
- ActionResult:可以返回一个描述了 Action 方法执行结果的对象,这样的好处是想返回什么结果就指定对应的返回对象就行,不用关心怎么去执行并生成结果。
- Filters:通过C#特性,对某一种行为的处理(比如授权和验证)进行封装,方便了在多个 Controller 和 Action 方法之间进行重用。
3、从Controller中获取数据有以下三种主要来源:
- 一系列的上下文对象。
最常见的上下文对象如下图所示:
- 传递给 Action 方法的参数。
Controller 类通过 MVC 框架的 value provider 和 model binder 组件来为 Action 方法获取参数的值。value provider 提供了一系列Controller中可以访问到的值,在内部它通过从 Request.Form、Request.QueryString、Request.Files 和 RouteData.Values 等上下文对象中提取数据(键值集合),然后把数据传递给 model binder,model binder试图将这些数据与Action方法的参数进行匹配。默认的 model binder 可以创建和赋值给任何.NET类型对象参数(即 Action 方法的参数),包括集合和自定义的类型。
- 显式的调用框架的模型绑定(Model Binding)特性。
4、ActionResult是描述 Action 方法执行结果的对象,它的好处是想返回什么结果就指定对应的返回对象就行,不用关心如何使用Response对象来组织和生成结果。ActionResult 是一个命令模式的例子,这种模式通过存储和传递对象来描述操作。当 MVC 框架从 Action 方法中接收到一个 ActionResult 对象,它调用这个对象的 ExecuteResult 方法,其内部是通过 Response 对象来返回我们想要的输出结果。 MVC框架包含了许多 ActionResult 类型,这些类型都继承自 ActionResult 类,大部分在 Controller 类中都有简便的方法:
除了该表列出来的,还有ContentResult、FileResult、JsonResult 和 JavaScriptResult。
5、从Action传递数据到View中的几种方式:
- View Model对象:
//Action中 public ViewResult Index() { DateTime date = DateTime.Now; return View(date); } //View中获取 @model DateTime @{ ViewBag.Title = "Index"; }<h2>Index</h2> The day is: @Model.DayOfWeek
- ViewBag,是一个动态(dynamic)的弱类型,在程序运行的时候解析,是 MVC3 中新增的特性,只在当前View有效。
- ViewData,是一个字典集合,也是只在当前View有效,性能比 ViewBag 高,但是使用的时候需要类型转换。
- TempData,也是字典集合,一般用于两个请求之间临时缓存内容或页面间传递消息,保存在 Session 中,使用完以后则从 Session 中被清除。
一般在当前 View 中使用 ViewBag 或 ViewData,在两个请求之间传递临时数据用 TempData。由于 TempData 被使用后即被释放,所以如果要二次使用 TempData 中的数据就需要将其存到其他变量中。
转载于:https://www.cnblogs.com/wangwust/p/6386849.html
【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)相关推荐
- 【ASP.NET MVC 学习笔记】- 07 使用 Entity Framework
本文参考:http://www.cnblogs.com/willick/p/3304534.html 1.ORM(Object Relation Mapping)工具,是为了解决"关系数据库 ...
- 【ASP.NET MVC 学习笔记】- 16 Model Binding(模型绑定)
本文参考:http://www.cnblogs.com/willick/p/3424188.html. 1.Model Binding是Http请求和Action方法之间的桥梁,是MVC框架根据Htt ...
- ASP.NET MVC4学习笔记之Controller的激活
一. 高层相关类说明 当路由系统根据请求Url收集路由信息后,下一步就要将路由信息传给Controller激活系统,Controller激活系统负责实现了IController接口的Controlle ...
- 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject
本文参考:http://www.cnblogs.com/willick/p/3299077.html 1.在ASP.NET MVC中一个客户端请求是在特定的Controller的Action中处理的. ...
- 【ASP.NET MVC 学习笔记】- 09 Area的使用
本文参考:http://www.cnblogs.com/willick/p/3331519.html 1.ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,这对于大的工程非常有用, ...
- ASP.NET MVC 入门4、Controller与Action
本系列文章基于ASP.NET MVC Preview5. Controller是MVC中比较重要的一部分.几乎所有的业务逻辑都是在这里进行处理的,并且从Model中取出数据.在ASP.NET MVC ...
- spring4.0基于Java配置_Spring MVC学习笔记之Controller查找(基于Spring4.0.3)
0 摘要 本文从源码层面简单讲解SpringMVC的处理器映射环节,也就是查找Controller详细过程 1 SpringMVC请求流程 Controller查找在上图中对应的步骤1至2的过程 Sp ...
- ASP.NET MVC学习之路由篇(2)
ASP.NET MVC学习之路由篇(2) 原文:ASP.NET MVC学习之路由篇(2) 继ASP.NET MVC学习之路由篇(1)后继续学习. 7.解决与物理路径的冲突 当发送一个请求至ASP.NE ...
- ASP.NET MVC学习之控制器篇
一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...
最新文章
- [linux]Linux挂载光盘,解压光盘内的tar安装包,并安装软件(Install VMware Tools in a Linux Guest)...
- pip和conda到底有什么不一样?
- 【项目实战课】基于Pytorch的RetinaFace人脸与关键点检测实战
- [C/C++面试题]-错题笔记与解析
- 为什么Python是最吸金编程语言?
- 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?
- 【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
- 自然数从1到n之间,有多少个数字含有1
- 洛谷——P1008 [NOIP1998 普及组] 三连击
- OpenCV图像处理(4)——去除小面积
- 【廖雪峰官方网站/Java教程】注解
- 中国未来5年IP地址需求总量高达345亿
- java 回调函数传值_说明Java的传递与回调机制的代码示例分享
- php中的图片变名为8位用什么,CSS_详解PNG图片,1、PNG图片类型
PNG格式有8位、 - phpStudy...
- Python 开发音乐下载器实践
- Python常用快捷键整理
- android 后台运行管理,Android 后台运行白名单实现保活
- 输油管的布置数学建模matlab,输油管布置问题的优化模型
- 一点一滴开始搭建自己的项目框架之支付宝篇 支付宝提现
- SQL Server 日期 字符串 格式转换 函数 datetime convert