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学习系 ...
随机推荐
- linq to sql中的自动缓存(对象跟踪)
linq to sql中,对于同一个DataContext上下文环境,根据表主键选择记录时(当然这里所指的“记录”会自动转成“对象”),如果该记录已经被select过,默认情况下会被自动缓存下来,下次 ...
- spring boot 添加整合ssl使得http变成https方法
1. https出现的背景:(1)都知道http传输协议是裸漏的,明文传输的,极易被黑客拦截,因此,(2)人们想出的使用加密,也就是 对称加密 例如aes,不过这个由于因为对称加密需要每个客户端和服务 ...
- VS2013 单元测试
1.打开VS2013 --> 新建一个项目.这里创建一个c#控制台项目.取名为ccj_test1 2.进入控制台项目ccj_test1的Program类,创建一个add静态方法,并将progra ...
- 『编程题全队』Alpha阶段事后诸葛亮分析
一.设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? Answer: (1)我们软件主要解决个人和团队的事务管理问题 (2)我们软件的定义明确和清楚 ...
- ESXi 20181229 刚学到的知识点
1. 查看性能 能够获取到服务器的电源消耗 这里很明显的就能看到 2路服务器的情况下 电源在300w 以下, 平均值 270w 左右. 2. 然后在配置里面能够看到 服务器的信息 设置还能看到 序列 ...
- Windows 2019 下安装Oracle18c
1. 跟之前版本不一样 与linux 的版本一样 18c的DB 端的安装有区别. 首先需要 创建一个oracle的目录. 这里最简单的方法是 参照12c的目录来 创建 比如我创建的 然后将 db_ho ...
- python自动化之鼠标移动
################################用GUI自动化控制键盘和鼠标############################### ''' http://pyautogui.r ...
- 洛谷P2396 yyy loves Maths VII
P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 ...
- 【模板】Kruskal
int n, m; struct Edge { int u, v, w; }a[MAX_M]; // 令a关于w升序排列 int r[MAX_N]; // 并查集 int Find(int x) { ...
- 开发Spring Shell应用程序
2 开发Spring Shell应用程序 向shell提供命令非常简单,需要学习的注解很少.该命令的实现风格与使用依赖注入的应用程序的开发类相同,您可以利用Spring容器的所有特性来实现您的命令类. ...