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: ViewResult作为返回类型
public ViewResult Index()
{
return View();
}
//方法二: ViewResultBase作为返回类型
public ViewResultBase Index()
{
return View();
}
//方法三: ActionResult作为返回类型
public ActionResult Index()
{
return View();
}

ViewResult

public EmptyResult  Index()
{
return null;
}

EmptyResult

//方法1:ContentResult作为返回类型
public ContentResult Index()
{
return Content("Hello World");
}
//方法2:ActionResult作为返回类型
public ActionResult Index()
{
return Content("Hello World");
}

ContentResult

public JsonResult jsonResult()
{
TechInfoCompanay jsonCompany=new TechInfoCompanay(){id="S001",CompanyName="信息科技有限公司"};
return Json(jsonCompany,JsonRequestBehavior.AllowGet);
}
//定义一个公司类
public class TechInfoCompanay
{
public string id { set; get; }
public string CompanyName { set; get; }
}

JsonResult

//方法1:RedirectResult作返回类型
public RedirectResult redirectResult()
{
return Redirect("https://www.google.com.hk/");//具体的URL
} //方法1: ActionResult作返回类型
public ActionResult redirectResult()
{
return Redirect("https://www.google.com.hk/");//具体的URL
}

RedirectResult

public ActionResult redirectResult()
{
return Redirect("https://www.google.com.hk/");//具体的URL
}
public RedirectToRouteResult redirectToRouteResult()
{
return RedirectToAction("Index");
}

RedirectToRouteResult

8.异步控制器

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

#region 1、异步请求

        [AsyncTimeout(1000)]
public async Task<ActionResult> Index()
{
var data = await GetPageTaskAsync("http://163.com");
return data;
} public async Task<ActionResult> GetPageTaskAsync(string url)
{
try
{
using (var client = new HttpClient())
{
await Task.Delay(3000);
var fetchTextTask = client.GetStringAsync(url);
return Json(new { fetchText = await fetchTextTask,error="NO" },JsonRequestBehavior.AllowGet);
}
}
catch (WebException ex)
{ throw ex;
}
} #endregion

9.行为过滤器

10.自定义行为过滤器

OnActionExecuting:  在方法执行之前执行

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

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

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

public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//执行Action之前
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
//执行Action之后
}
}

在需要的Action上面加上验证

public class HomeController : Controller
{
[Filters.MyActionFilter]
public ActionResult Index()
{
return View();
}
}

从源码的角度理解各种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. ELK安装部署

    一.ELK简介 ELK是Elasticsearch.Logstash.Kibana的简称,这三者是核心套件,但并非全部.Elasticsearch是实时全文搜索和分析引擎,提供搜集.分析.存储数据三大 ...

  2. 关于Unity物理事件的执行顺序的最新理解

    物体A: public class A:{ B b; void FixedUpdate(){ if(input.GetKeyDow(Keycode.I)) { collider.enable=fals ...

  3. 部署jar项目常用命令

      netstat -tunlp | grep  ××   查询出端口为××在运行应用的线程ip   kill -9  ××     关闭线程ip 为 ××的应用   rm  -f  ××.jar  ...

  4. SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志(译)

    SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情 ...

  5. [转]An overview of Openvswitch implementation

    This is NOT a tutorial on how to use openvswitch, this is for developers who want to know the implem ...

  6. mysql学习(1)

    开始我们基础的mysql学习 第一部分:补充知识 1. 昨天讲到的mysql初始化密码为空,今天又get到一种新的方法 Mysql安装后需要做的 Mysql安装成功后,默认的root用户密码为空,你可 ...

  7. [2017BUAA软工助教]结对项目小结

    2017BUAA结对项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7604111.html 二.评分细则 1.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...

  8. 20135202闫佳歆--week3 课本1-2章学习笔记

    第一章 Linux内核简介 一.Unix Unix是一个强大.健壮和稳定的操作系统. 简洁 绝大部分东西都被当做文件对待.这种抽象使对数据和对设备的操作都是通过一套相同的系统调用借口来进行的:open ...

  9. 完善好的web项目(校园包车)

  10. Eclipse,代码中有错误,项目中却不显示红叉

    ***修改eclipse 代码提示级别1.单个项目修改项目上右键-->properties-->java compiler-->building-->enable projec ...