1.控制器

Controller接收用户请求,将Model和View匹配在一起,共同完成用户请求。它是一个分发器,通过选择不同的Model、View,可以决定完成不同的用户请求。

但Controller并不做任何的数据处理,只把用户的信息传递给模型,告诉Model做什么,选择符合要求的View返回给用户。

2.Controller处理请求的流程

3.ControllerBase类

4.Controller类

除了从ControllerBase类继承的方法,Controller类还有以下几个主要的方法:

1)Content

2).File方法

3).Json方法

4).PartialView方法

5).Redirect方法

6).View方法

7).JavaScript方法

用来返回可在客户端执行的脚本

5.ViewData与ViewBag的区别

6.TempData(可以跨Action传递,且只传递一次)

7.返回类型

返回类型都继承自抽象类ActionResult

  1. //方法1: ViewResult作为返回类型
  2. public ViewResult Index()
  3. {
  4. return View();
  5. }
  6. //方法二: ViewResultBase作为返回类型
  7. public ViewResultBase Index()
  8. {
  9. return View();
  10. }
  11. //方法三: ActionResult作为返回类型
  12. public ActionResult Index()
  13. {
  14. return View();
  15. }

ViewResult

  1. public EmptyResult Index()
  2. {
  3. return null;
  4. }

EmptyResult

  1. //方法1:ContentResult作为返回类型
  2. public ContentResult Index()
  3. {
  4. return Content("Hello World");
  5. }
  6. //方法2:ActionResult作为返回类型
  7. public ActionResult Index()
  8. {
  9. return Content("Hello World");
  10. }

ContentResult

  1. public JsonResult jsonResult()
  2. {
  3. TechInfoCompanay jsonCompany=new TechInfoCompanay(){id="S001",CompanyName="信息科技有限公司"};
  4. return Json(jsonCompany,JsonRequestBehavior.AllowGet);
  5. }
  6. //定义一个公司类
  7. public class TechInfoCompanay
  8. {
  9. public string id { set; get; }
  10. public string CompanyName { set; get; }
  11. }

JsonResult

  1. //方法1:RedirectResult作返回类型
  2. public RedirectResult redirectResult()
  3. {
  4. return Redirect("https://www.google.com.hk/");//具体的URL
  5. }
  6.  
  7. //方法1: ActionResult作返回类型
  8. public ActionResult redirectResult()
  9. {
  10. return Redirect("https://www.google.com.hk/");//具体的URL
  11. }

RedirectResult

  1. public ActionResult redirectResult()
  2. {
  3. return Redirect("https://www.google.com.hk/");//具体的URL
  4. }
  5. public RedirectToRouteResult redirectToRouteResult()
  6. {
  7. return RedirectToAction("Index");
  8. }

RedirectToRouteResult

8.异步控制器

在异步调用的过程中,服务器在等待第一个请求完成的过程中不会阻塞对其他请求的响应。 因此,当有许多请求调用长时间运行的操作时,异步请求可以防止出现请求排队的情况。

  1. #region 1、异步请求
  2.  
  3. [AsyncTimeout(1000)]
  4. public async Task<ActionResult> Index()
  5. {
  6. var data = await GetPageTaskAsync("http://163.com");
  7. return data;
  8. }
  9.  
  10. public async Task<ActionResult> GetPageTaskAsync(string url)
  11. {
  12. try
  13. {
  14. using (var client = new HttpClient())
  15. {
  16. await Task.Delay(3000);
  17. var fetchTextTask = client.GetStringAsync(url);
  18. return Json(new { fetchText = await fetchTextTask,error="NO" },JsonRequestBehavior.AllowGet);
  19. }
  20. }
  21. catch (WebException ex)
  22. {
  23.  
  24. throw ex;
  25. }
  26. }
  27.  
  28. #endregion

9.行为过滤器

10.自定义行为过滤器

OnActionExecuting:  在方法执行之前执行

OnActionExecuted:  方法的逻辑代码执行完成之后触发

OnResultExecuting: 方法在准备放回结果的时候触发

OnResultExecuted:方法返回结果之后触发

  1. public class MyActionFilter : ActionFilterAttribute
  2. {
  3. public override void OnActionExecuting(ActionExecutingContext filterContext)
  4. {
  5. //执行Action之前
  6. }
  7. public override void OnResultExecuted(ResultExecutedContext filterContext)
  8. {
  9. //执行Action之后
  10. }
  11. }

在需要的Action上面加上验证

  1. public class HomeController : Controller
  2. {
  3. [Filters.MyActionFilter]
  4. public ActionResult Index()
  5. {
  6. return View();
  7. }
  8. }

从源码的角度理解各种Result

其他学习教程:http://www.cnblogs.com/soaeon/p/5635144.html

ASP.NET MVC学习(二)之控制器Controller的更多相关文章

  1. ASP.NET MVC 学习2、从Controller传递数据到View

      参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view 一,Control ...

  2. ASP.NET MVC 学习1、新增Controller,了解MVC运行机制

    1,turorial ,根据链接教程新建一个MVC项目 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/ ...

  3. ASP.NET MVC 4 (二)控制器

    MVC中控制器负责处理请求,由它操作数据模型,最后返回视图给用户. IController接口 所有的控制器类以Controller结尾,必须实现System.Web.Mvc.IController接 ...

  4. 【ASP.NET MVC 学习笔记】- 11 Controller和Action(2)

    本文参考:http://www.cnblogs.com/willick/p/3331513.html 1.MVC一个请求的发出至action返回结果的流程图如下: 重点是Controller Fact ...

  5. 【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)

    本文参考:http://www.cnblogs.com/willick/p/3331521.html 1.继承IController接口,示例代码将当前请求的Controller和Action打印到浏 ...

  6. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  7. ASP.NET MVC学习之控制器篇

    一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...

  8. ASP.NET MVC学习系列(二)-WebAPI请求

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  9. ASP.NET MVC学习系列(二)-WebAPI请求(转)

    转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...

  10. [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参

    [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...

随机推荐

  1. Mac 上flink的安装与启动

    在Mac 上安装flink,需要通过Homebrew安装的 1.howmebrew的安装方式,在终端粘贴以下命令,或者去官网https://brew.sh/index_zh-cn 找到此代码复制粘贴到 ...

  2. 35道Redis面试题

    1.什么是redis?   Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数 ...

  3. A1020. Tree Traversals(25)

    这是一题二叉树遍历的典型题,告诉我们中序遍历和另外一种遍历序列,然后求任何一种遍历序列. 这题的核心: 建树 BFS #include<bits/stdc++.h> using names ...

  4. 《大象Think in UML》阅读笔记(三)

    Think in UML 阅读笔记(三) 把从现实世界中记录下来的原始需求信息,再换成一种可以知道开发的表达方式.UML通过被称为之概念化的过程来建立适合计算机理解和实现的模型,这个模型被称为分析模型 ...

  5. Answer My Questions

    回答自己的问题,真棒!断电让自己的工作重来.真棒! 阅读以前自己的博客,发现问题都已经有了答案. (1).想要成为一名专业的软件工程师,首先得是有相关的资格证书,这个可以通过软考获得.然后在职场中锻炼 ...

  6. ”数学口袋精灵“第二个Sprint计划---第二天

    “数学口袋精灵”第二个Sprint计划----第二天进度 任务分配: 冯美欣:欢迎界面的音效 吴舒婷:游戏界面的动作条,选择答案后的音效 林欢雯:完善算法代码的设计 进度:   冯美欣:找到了几个音乐 ...

  7. Daily Scrum - 11/16

    时间:午饭 今天小组例会主要是汇报了各自的进度.任烁那边主要为工程添加了单词的类(包含各个参数等成员变量),方便以后实现算法:拜重阳实现了一个简易的“点进-点出”UI,可谓迈出了艰难的第一步:章玮和罗 ...

  8. msyql: navicat 连接时msyql遇到的问题

    1.使用 mysql的用户,密码连接 服务器上的MySQL时,连接不上,报 100xx的错误. 1)原因是,MySQL默认情况下,只允许本地连接[127.0.0.1,或localhost]来连接mys ...

  9. PHP filemtime() 函数

    定义和用法 filemtime() 函数返回文件内容上次的修改时间. 若成功,则时间以 Unix 时间戳的方式返回.若失败,则返回 false. 语法 filemtime(filename) 参数 描 ...

  10. ethereum & ETC

    ethereum & ETC https://github.com/ethereum/go-ethereum https://discountry.github.io/tutorial/201 ...