ASP.NET MVC学习(二)之控制器Controller
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的更多相关文章
- ASP.NET MVC 学习2、从Controller传递数据到View
参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view 一,Control ...
- ASP.NET MVC 学习1、新增Controller,了解MVC运行机制
1,turorial ,根据链接教程新建一个MVC项目 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/ ...
- ASP.NET MVC 4 (二)控制器
MVC中控制器负责处理请求,由它操作数据模型,最后返回视图给用户. IController接口 所有的控制器类以Controller结尾,必须实现System.Web.Mvc.IController接 ...
- 【ASP.NET MVC 学习笔记】- 11 Controller和Action(2)
本文参考:http://www.cnblogs.com/willick/p/3331513.html 1.MVC一个请求的发出至action返回结果的流程图如下: 重点是Controller Fact ...
- 【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)
本文参考:http://www.cnblogs.com/willick/p/3331521.html 1.继承IController接口,示例代码将当前请求的Controller和Action打印到浏 ...
- 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 ...
- ASP.NET MVC学习之控制器篇
一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...
- ASP.NET MVC学习系列(二)-WebAPI请求
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- ASP.NET MVC学习系列(二)-WebAPI请求(转)
转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
随机推荐
- Mac 上flink的安装与启动
在Mac 上安装flink,需要通过Homebrew安装的 1.howmebrew的安装方式,在终端粘贴以下命令,或者去官网https://brew.sh/index_zh-cn 找到此代码复制粘贴到 ...
- 35道Redis面试题
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数 ...
- A1020. Tree Traversals(25)
这是一题二叉树遍历的典型题,告诉我们中序遍历和另外一种遍历序列,然后求任何一种遍历序列. 这题的核心: 建树 BFS #include<bits/stdc++.h> using names ...
- 《大象Think in UML》阅读笔记(三)
Think in UML 阅读笔记(三) 把从现实世界中记录下来的原始需求信息,再换成一种可以知道开发的表达方式.UML通过被称为之概念化的过程来建立适合计算机理解和实现的模型,这个模型被称为分析模型 ...
- Answer My Questions
回答自己的问题,真棒!断电让自己的工作重来.真棒! 阅读以前自己的博客,发现问题都已经有了答案. (1).想要成为一名专业的软件工程师,首先得是有相关的资格证书,这个可以通过软考获得.然后在职场中锻炼 ...
- ”数学口袋精灵“第二个Sprint计划---第二天
“数学口袋精灵”第二个Sprint计划----第二天进度 任务分配: 冯美欣:欢迎界面的音效 吴舒婷:游戏界面的动作条,选择答案后的音效 林欢雯:完善算法代码的设计 进度: 冯美欣:找到了几个音乐 ...
- Daily Scrum - 11/16
时间:午饭 今天小组例会主要是汇报了各自的进度.任烁那边主要为工程添加了单词的类(包含各个参数等成员变量),方便以后实现算法:拜重阳实现了一个简易的“点进-点出”UI,可谓迈出了艰难的第一步:章玮和罗 ...
- msyql: navicat 连接时msyql遇到的问题
1.使用 mysql的用户,密码连接 服务器上的MySQL时,连接不上,报 100xx的错误. 1)原因是,MySQL默认情况下,只允许本地连接[127.0.0.1,或localhost]来连接mys ...
- PHP filemtime() 函数
定义和用法 filemtime() 函数返回文件内容上次的修改时间. 若成功,则时间以 Unix 时间戳的方式返回.若失败,则返回 false. 语法 filemtime(filename) 参数 描 ...
- ethereum & ETC
ethereum & ETC https://github.com/ethereum/go-ethereum https://discountry.github.io/tutorial/201 ...