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学习系 ...
随机推荐
- Intellij IDEA 2017 debug断点调试技巧与总结详解篇
转载自csdn----------------------------------------------------------------------https://blog.csdn.net/q ...
- Bloom Filter解析
布隆过滤器简介:https://www.cnblogs.com/Jack47/p/bloom_filter_intro.html 布隆过滤器详解:原文链接:http://www.cnblogs.com ...
- 每日scrum(6)
今天是小组正式冲刺的第六天,软件的各种结尾工作,还有一些模块就已经全部实现了: 遇到的问题主要是对于自己能力的担忧,以前总是想,如果自己努力,就会怎样成功,其实并不是那样,小小的距离就是很远的能力差距 ...
- 第二个Sprint冲刺第六天(燃尽图)补
- struts2中的方法的调用
转载:http://blog.csdn.net/hephec/article/details/41808585 在Struts2中方法调用概括起来主要有三种形式: 第一种方式:指定method属性 & ...
- Spring transaction与EJB transaction的关系
TransactionDefinition Interface that defines Spring-compliant transaction properties. Based on the p ...
- Django-基本指令
目录 Django基本指令 下载Django 创建Django项目 创建APP应用 启动Django项目 更新数据库表或字段 清空数据库数据 创建超级管理员 查看更多命令 Django基本指令 下载D ...
- MySQL的order by时区分大小写
Mysql 查询区分大小写 mysql查询默认是不区分大小写的 如: select * from some_table where str=‘abc'; select * from some_tabl ...
- Delphi : 制作程序启动欢迎界面
制作欢迎界面的代码,大家参考 登陆窗体命名為:loginform.找到工程文件(Project -> View Source),找到如下代碼部分:begin Application.Init ...
- echarts实现折线图
前端框架使用的angular,折线图使用echarts实现. 这里实现的折线图只是简单是折线图,折线图显示在table中,不需要xy轴的数据说明. 1. item.component.html < ...