MVC-03 控制器(1)
Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并且负责协调Model与View之间的数据传递,是ASP.NET MVC整体运作的核心角色。
一、关于Controller的责任
控制器负责处理浏览器来的所有要求,并决定响应什么属性给浏览器,但它并不负责决定属性应如何显示,仅响应特定形态的属性给ASP.NET MVC框架,最后才由ASP.NET MVC框架依据响应的形态来决定如何响应属性给浏览器。
二、Controller的类别与方法
1.Controller本身就是一个Class,其中有许多Method,这些method中只要是public method就会被视为是一个Action,通过action接收客户端传来的要求与决定响应的View。
2.编写Controller的基本要求如下。
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
public class Default1Controller : Controller
{
public ActionResult Index()
{
ViewBag.Message = "修改此模板以快速启动你的ASP.NET MVC应用程序。";
return View();
}
}
}
(1)Controller必须为public。
(2)Controller名称必须以Controller结尾。
(3)必须继承自ASP.NET MVC内建的Controller类型,或继承IController的自定义类型。
(4)所有action必须为public,任何非公开的方法如声明为private或protected的方法都不会被视为一个action。
以下哪个不是编写Controller的基本要求( )。
A.Controller必须为public类型 B.Controller名称必须以Controller结尾
C.必须继承Controller类型 D.所有动作方法必须为公开方法
三、Controller的运行过程
当Controller被MvcHandler选中之后,下一步就是通过ActionInvoker选定适当的Action来运行。在Controller中的每一个Action可以定义0到多个参数,ActionInvoker会依据当下的RouteValue与客户端传来的数据,准备好传入Action参数。最后正式调用Controller中被选中的那个Action方法。
参数传入的属性都是通过一种称为模型绑定(Model Binding)机制,从RequestContext取得数据,并将数据对应或传入方法的参数中,让Action不用再像之前ASP或ASP.NET Web Forms中经常使用的Request.Form或Request.QueryString等对象来取得客户端的数据。
Action运行完后的回传值通常是ActionResult类型或其衍射类型(Derived Classes)。ActionResult是一个抽象类,ASP.NET MVC本身实现了许多不同类型ActionResult的子类别。例如常用的ViewResult用来回传一个View,RedirectResult用来将网页转向至其他网址,ContentResult回传一个文字属性、FileResult回传一个二进制的文档,等等,这些都是继承自ActionResult的类型,也都可以拿来当成Action回传类型。总之,Action回传的类型可以是ActionResult类型或其衍生类型,以及直接使用.NET内建的基本数据类型(primitive types),如string或int等,以及void。
MvcHandler从Controller得到ActionResult之后,就会开始运行ActionResult提供的ExecuteResult方法,并将运行结果响应到客户端,这时Controller的任务就算完成。
四、动作方法选定器
1.NonAction属性
告知ActionInvoker不要选定这个Action来运行。这个属性的主要用途是用来保护Controller中的特定公开方法不要发布到Web上,或是功能尚未开发完成就要进行部署,暂时不想将此方法删除,就可以套用这个属性不要对外公开。
[NonAction]
public ActionResult Index()
{
return View();
}
将Action方法的public更改成private,也可以达到完全相同的目的:
private ActionResult Index()
{
return View();
}
2.HTTP动词限定属性
动作方法选定器还有HttpGet、HttpPost、HttpDelete、HttpPut、HttpHead、HttpOptions、HttpPatch属性。
最常用在需要接收窗体信息的时候, 你可以创建两个同名的Action,一个套用HttpGet属性,以显示窗体HTML,另一个套用HttpPost,以接收窗体输出的值。
MVC-03 控制器(1)的更多相关文章
- ASP.NET MVC 5 - 控制器
MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据 ...
- .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程)
阅读目录: 1.开篇介绍 2.ASP.NETMVC IControllerFactory 控制器工厂接口 3.ASP.NETMVC DefaultControllerFactory 默认控制器工厂 4 ...
- MVC 在控制器中获取某个视图动态的HTML代码
ASP.NET MVC 在控制器中获取某个视图动态的HTML代码 如果我们需要动态的用AJAX从服务器端获取HTML代码,拼接字符串是一种不好的方式,所以我们将HTML代码写在cshtml文件中, ...
- 三、ASP.NET MVC Controller 控制器(二:IController控制器的创建过程)
阅读目录: 1.开篇介绍 2.ASP.NETMVC IControllerFactory 控制器工厂接口 3.ASP.NETMVC DefaultControllerFactory 默认控制器工厂 4 ...
- c#异步编程(三)—ASP.NET MVC 异步控制器及EF异步操作
ASP.NET MVC 异步控制器及EF异步操作 异步控制器 ASP.NET MVC2后开始了对异步请求管道的支持,异步请求管道的作用是允许web服务器处理长时间运行的请求,比如 那些花费大量时间等待 ...
- [转]ASP.NET MVC 5 - 控制器
MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道 语雀: https://www.yuque.com/yuejiangliu/dotnet/ ...
- Spring MVC(三)--控制器接受普通请求参数
Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...
- .NET/ASP.NET MVC Controller 控制器(深入解析控制器运行原理)
阅读目录: 1.开篇介绍 2.ASP.NETMVC Controller 控制器的入口(Controller的执行流程) 3.ASP.NETMVC Controller 控制器的入口(Controll ...
- C# MVC ( 将控制器的实体类注册到视图 )
(1)控制器 代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...
随机推荐
- 显示标题栏中标题左侧的小图icon
如何显示网站logo,定义网站收藏夹图标 代码与解释 <link rel="shortcut icon" href="/path/favicon.ico" ...
- Oracle的字符替换函数translate用法
参考文档如下:http://www.banping.com/2009/05/18/oracle_function_translate/ Oracle提供了一个字符替换函数translate,不同于re ...
- Linux远程自动输入密码抓取远程资源
#!/usr/bin/expect -fset timeout 3000set sys_date [lindex $argv 0] #要抓取的文件日期spawn scp /data3/xiaorui/ ...
- python正则表达式实例
1.将"(332.21)luck李."中(332.21)抽取出来同时能够 将”(23)luck李.“中的(23)抽取出来 pp = re.compile('(\(\d*(.\d*) ...
- BZOJ 2762: [JLOI2011]不等式组( 平衡树 )
对不等式变形..然后就是维护一些数, 随便找个数据结构都能写吧....用double感觉会有精度误差, 分类讨论把<改成<=了很久后弃疗了, 自己写了个分数体....然后速度就被完爆了.. ...
- xhprof
#官网下载 http://pecl.php.net/package/xhprof tar zxf xhprof-0.9.2.tgz cd xhprof-0.9.2/extension/ sud ...
- Html页面操作json串
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaSc ...
- expect交互式自动化脚本
一 什么是expect 1 Expect is a tool for automating interactive applications such as telnet, ftp, passwd, ...
- python 发送安全邮件
用python 写了一个发送邮件的脚本,配上host 和端口,发现一直报错: smtplib.SMTPException: No suitable authentication method foun ...
- software testing homework2
一.Checkstyle安装及使用 1.checkstyle插件包:http://sourceforge.net/projects/eclipse-cs/ checkstyle.xml配置文件:htt ...