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学习系 ...
随机推荐
- 验证Xpath和CSS 路径是否有效
XPath定位和CSS定位在Selenium中是经常使用的. 在FireFox浏览器和Chrome浏览器,可以使用这样的方法来验证定位是否准确. 以Chrome浏览器做范例 按键盘的F12 进入开发者 ...
- Notepad++常用插件
Notepad++常用插件 1.CCompletion 进行文本的方法查找的工具. 会点击Ccompletion中的CCompletion菜单,就会出现菜单选择框 2.Compare 进行文本比较的工 ...
- Revit二次开发-根据视图阶段(Phase)创建房间
最近开发业务中,有一个自动创建房间的功能,很自然的想到了Document.NewRooms2方法.但是当前功能的特殊之处在于,Revit项目视图是分阶段(Phase)的,不同阶段的房间是互相独立的. ...
- 阿里(蚂蚁,菜鸟)+百度+网易面经(JAVA)
本人综述: 本人本科和硕士均是毕业于普通的双非院校,参加过ACM竞赛,阿里面了三次全被拒了,网易收到offer. 阿里面试: 阿里的面试问的都是很基础的东西,如操作系统的简单问题,计算机网络的基本问题 ...
- 1.AKATSUKI
## 1.AKATSUKI - “晓”,日本漫画<火影忍者>及其衍生作品中的一个秘密组织. - 成立之初是为了给自己的国家带来和平. ## 2.团队成员 - 邱东宝 - 211606325 ...
- C# 多线程初级汇总
异步委托 创建线程的一种简单方式是定义一个委托,并异步调用它 委托是方法的类型安全的引用 Delegate类还支持异步地调用方法.在后台,Delegate类会创建一个执行任务的线程 投票,并检查委托是 ...
- 如何使用js判断视频是否可以成功访问
日常工作中会出现各个公司网络不互通的情况,视频如果采用不互通的地址也无法播放,下面方法提供了检测视频是否可以播放的解决方案: 1.跨域 var video = document.createEleme ...
- AOP 环绕通知 集成了前置 后置 返回通知等功能
AOP 环绕通知 集成了前置 后置 返回通知等功能
- 神奇的Redis延迟
最近在做某业务Redis的缩容工作,涉及到数据迁移,而Redis的数据迁移看起来蛮简单的,一对一的数据迁移只需要在slave行配置masterauth 和slaveof 两个参数即可,当然迁移过程中涉 ...
- 【设计模式】—— 中介者模式Mediator
前言:[模式总览]——————————by xingoo 模式意图 使用一个中介的对象,封装一组对象之间的交互,这样这些对象就可以不用彼此耦合. 这个中介者常常起着中间桥梁的作用,使其他的对象可以利用 ...