【ASP.NET MVC种类】浅谈ASP.NET MVC 调控器葡京在线官网

 当通过ActionInvoker选定Controller内的公然办法时,ASP.NET
MVC还有另一个风味称为”动作方法选定器(Action Method
Selector)”,该选定器能够套用在动作方法上,以便ActionInvoker”选定”适当的Action。

 1 public TempDataDictionary TempData
 2         {
 3             get
 4             {
 5                 if ((this.ControllerContext != null) && this.ControllerContext.IsChildAction)
 6                 {
 7                     return this.ControllerContext.ParentActionViewContext.TempData;
 8                 }
 9                 if (this._tempDataDictionary == null)
10                 {
11                     this._tempDataDictionary = new TempDataDictionary();
12                 }
13                 return this._tempDataDictionary;
14             }
15             set
16             {
17                 this._tempDataDictionary = value;
18             }
19         }
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 using System.Reflection;
 8 namespace MVCControllerDemo.Controllers
 9 {
10     public class ControllerDemoController : IController
11     {
12         public String Index()
13         {
14             return "<h1>Index</h1>";
15         }
16 
17 
18 
19         public void Execute(System.Web.Routing.RequestContext requestContext)
20         {
21             string action = requestContext.RouteData.Values["action"].ToString();
22             Type typ = typeof(ControllerDemoController);
23             MethodInfo md = typ.GetMethod(action, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
24             if (md == null)
25             {
26                 requestContext.HttpContext.Response.Write("<h1>404</h1>");
27             }
28             else
29             {
30                 string s = md.Invoke(this, null).ToString();
31                 requestContext.HttpContext.Response.Write(s);
32             }
33         }
34     }
35 }

(2)动作过滤器(Action Filters);

 1 public TempDataDictionary TempData
 2         {
 3             get
 4             {
 5                 if ((this.ControllerContext != null) && this.ControllerContext.IsChildAction)
 6                 {
 7                     return this.ControllerContext.ParentActionViewContext.TempData;
 8                 }
 9                 if (this._tempDataDictionary == null)
10                 {
11                     this._tempDataDictionary = new TempDataDictionary();
12                 }
13                 return this._tempDataDictionary;
14             }
15             set
16             {
17                 this._tempDataDictionary = value;
18             }
19         }
 1 //方法1:RedirectResult作返回类型
 2 public RedirectResult redirectResult()
 3         {
 4             return Redirect("https://www.google.com.hk/");//具体的URL
 5         }
 6 
 7 //方法1: ActionResult作返回类型
 8 public  ActionResult redirectResult()
 9         {
10             return Redirect("https://www.google.com.hk/");//具体的URL
11         }

陆.13者在MVC框架里的定义

葡京在线官网 1葡京在线官网 2

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace MVCControllerDemo.Controllers
 8 {
 9     public class ControllerDemoController : Controller
10     {
11 
12         public string GeneralFunction()
13         {
14             return "自定义一般方法";
15         }
16     }
17 }

伍  Controller动作结果

这种方法相比常用。

二   Controller体系和措施

  • 即身份验证
  • 授权
  • 操作前后管理
  • 结果前后管理
  • 错误管理。

 (1)NonAction属性

测试结果

四.① 动作方法选定器

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace MVCControllerDemo.Controllers
 8 {
 9     public class ControllerDemoController : Controller
10     {
11         //
12         // GET: /ControllerDemo/
13 
14         [HttpGet]
15         public ActionResult Index()
16         {
17             return View();
18         }
19     }
20 }

ASP.NET 定义了以下二种衍生型别。

(四)所以动作方法必须为公开药方式,任何非公开的措施如宣称为private或protected的艺术都不会被视为多少个动作方法;

【01】http://www.cnblogs.com/wangiqngpei557/p/3390812.html

View
Code

【2一】浅谈ASP.NET MVC网络安全;

ViewData

 1 //方法1:ContentResult作为返回类型
 2 public ContentResult Index()
 3         {
 4              return Content("Hello World");
 5         }
 6 
 7 
 8 //方法2:ActionResult作为返回类型
 9 public ActionResult Index()
10         {
11             return Content("Hello World");
12         }

陆.二 三者相比较

【壹伍】浅谈数据注脚和验证

Controller(调整器)在ASP.NET
MVC中担当调节全部客户端与服务端的互相,并且肩负协和Model与View之间数据传递,是ASP.NET
MVC框架大旨。Controller为ASP.NET
MVC框架的宗旨组成都部队分,其主要承担处理浏览器请求,并操纵响应什么内容给浏览器,但并不负担调控内容应什么展示(View的天职)。

 (一)承袭ActionResult的动作结果

View
Code

 ActionResult是Action运营后的回传型别,不过当Action回传ActionResult的时候,其实并不含有这些ActionResult(比方ViewResult)的周转结果,而是包涵运维这一个ActionResult时所需的数目,当MvcHandler从Controller赚取ActionResult之后才会去运营出ActionResult的结果。在ActionResult抽象类中单独定义了一个ExecuteResult()方法。

eg:举个自定义再次回到string的艺术

 当供给出示接收窗体消息时,能够创制五个同名的Action,分别用[HttpGet]葡京在线官网,(展现窗体HTML)和[HttpPost](接收窗体输出的值)属性来限制。

三者方法签名字为:

【10】浅谈jqGrid 在ASP.NET
MVC中增加和删除改查
     

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using System.Web.Routing;
 7 
 8 namespace MVCControllerDemo
 9 {
10     public class RouteConfig
11     {
12         public static void RegisterRoutes(RouteCollection routes)
13         {
14             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15 
16             routes.MapRoute(
17                 name: "Default",
18                 url: "{controller}/{action}/{id}",
19                 defaults: new { Controller = "ControllerDemo", action = "Index", id = UrlParameter.Optional }
20             );
21         }
22     }
23 }

陆.二 三者比较

 1 //方法1: ViewResult作为返回类型
 2 public ViewResult Index()
 3         {
 4             return View();
 5         }
 6 
 7 
 8 
 9  //方法二: ViewResultBase作为返回类型
10 public ViewResultBase Index()
11         {
12             return View();
13         }
14 
15 //方法三: ActionResult作为返回类型
16 public ActionResult Index()
17         {
18             return View();
19         }

葡京在线官网 3葡京在线官网 4

eg5:RedirectResult

(四)所以动作方法必须为公开药方式,任何非公开的措施如宣称为private或protected的艺术都不会被视为二个动作方法;

【02】http://www.cnblogs.com/yaozhenfa/p/asp\_net\_mvc\_controller.html

【05】浅谈ASP.NET
MVC运维过程
    

三  Controller的运营进程

【13】浅谈NuGet在VS中的运用 
    

【04】http://blog.csdn.net/yw1688/article/details/51280665

【02】浅谈Google
Chrome浏览器(操作篇)(上)

(2)例子

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace MVCControllerDemo.Controllers
 8 {
 9     public class ControllerDemoController : Controller
10     {
11         //
12         // GET: /ControllerDemo/
13 
14         [HttpGet]
15         public ActionResult Index()
16         {
17             return View();
18         }
19     }
20 }

相似地,在定义Controller时,选择二种办法,即得以完毕IController和继续Controller。

5.1调整器动作结果类型(ActionResult)  

四.二 操作过滤器

操作过滤器能够视作一贯利用于操作方法或决定器类的特征来编排,或作为在大局过滤器列表中注册的单身类来编排。假诺筹算将编辑的操作过滤器作为特色来选用,那么它必须继续自FilterAttribute或它的别的子类,如ActionFilterAttribute。不作为天性应用的全局操作过滤器未有对那几个基类的渴求。无论使用哪个路由,操作过滤器援救的过滤活动都由落成的接口决定。

RouteConfig.cs

葡京在线官网 5葡京在线官网 6

 (3)例子

3者方法具名称叫:

【03】http://www.360doc.com/content/12/0611/15/29831\_217456312.shtml

三  Controller的运作进度

RouteConfig.cs

【25】浅谈大型ASP.NET MVC项目(含DEMO)

eg3:ContentResult

葡京在线官网 7

1 private ActionResult  Index()
2  {
3        return View();
4   }

(一)ViewData和TempData属性均再次来到叁个装有字典结构的数量容器,即字典类型的key/Value对,ViewBag为Dynamic类型。

葡京在线官网 8葡京在线官网 9

 eg4:JsonResult

View
Code

葡京在线官网 10

View
Code

【09】浅谈ASP.NET MVC
视图与调节器传递数据

【07】The framework of revelation  of 
Professional Asp.net MVC 5

 

 (1)NonAction属性

当Controller被MvcHandler选中之后,下一步正是通过ActionInvoker选定合适的Action来运维。在Controllr中的种种Action能够定义0到三个参数,ActionInvoker会凭仗当下的RouteValue与客户端传来的数目希图好可传唱Action参数的数码,最终正式调用Controller中被选中的十一分Action方法。参数字传送入的特性都以透过一种叫做模型绑定(Model
Binding)机制,从RequestContext取得数据,并将数据对应或传播方法的参数中,让Action不用再像以前ASP或ASP.NET
Web
Forms中时常利用的Request.Fomr或Request.QueryString等对象来获得客户端的数码,通过自定义的模子绑定,乃至能够让你对应除去Request.Form或Request.QueryString以外的多少来源于,举个例子:HTTP
Cookies、HTTP Headers等等。

 葡京在线官网 11

葡京在线官网 12葡京在线官网 13

葡京在线官网 14葡京在线官网 15

从如上代码能够总结出Controller应持有如下多少个着力尺度:

【05】Professional Asp.net MVC 5

ViewBag

1 [HttPost]
2 public ActionResult  Index()
3 {
4        return View();
5 }

1   概述

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace MVCControllerDemo.Controllers
 8 {
 9     public class ControllerDemoController : Controller
10     {
11         //
12         // GET: /ControllerDemo/
13 
14         [HttpGet]
15         public ActionResult Index()
16         {
17             return View();
18         }
19     }
20 }

View
Code

(一)ViewData和TempData属性均重返3个具备字典结构的数额容器,即字典类型的key/Value对,ViewBag为Dynamic类型。

10  版权

1   概述

(壹)Controller必须为公开体系;

葡京在线官网 16

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace MVCControllerDemo.Controllers
 8 {
 9     public class ControllerDemoController : Controller
10     {
11 
12         public string GeneralFunction()
13         {
14             return "自定义一般方法";
15         }
16     }
17 }
  • 感激您的阅读,若有不足之处,迎接指教,共同学习、共同升高。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少一些文章利用读书、参考、引用、抄袭、复制和粘贴等多种艺术组成而成的,大部分为原创。
  • 如您喜爱,麻烦推荐一下;如你有新主见,迎接提议,邮箱:贰零一417772捌@qq.com。
  • 可以转发该博客,但不能够不盛名博客来源。

若将[HttpGet]改为[HttpPost],浏览器将找不到能源。

1   // GET: /ControllerDemo/
2         public EmptyResult  Index()
3         {
4             return null;
5         }

【04】http://blog.csdn.net/yw1688/article/details/51280665

葡京在线官网 17葡京在线官网 18

 在ASP.NET MVC框架中,对ActionResult定义如下:

葡京在线官网 19葡京在线官网 20

【01】浅谈Google
Chrome浏览器(理论篇)

 1  [Dynamic]
 2         public object ViewBag
 3         {
 4             [return: Dynamic]
 5             get
 6             {
 7                 Func<ViewDataDictionary> viewDataThunk = null;
 8                 if (this._dynamicViewDataDictionary == null)
 9                 {
10                     if (viewDataThunk == null)
11                     {
12                         viewDataThunk = () => this.ViewData;
13                     }
14                     this._dynamicViewDataDictionary = new DynamicViewDataDictionary(viewDataThunk);
15                 }
16                 return this._dynamicViewDataDictionary;
17             }
18         }

调控器动作(具体的action)再次回到的结果叫做调整器动作结果,动作结果是调节器重回给浏览器请求的内容。ASP.NET
MVC框架援救三种标准项目标动作结果。

也可将public改为private,达到尊敬的意义。

测试结果

1 [NonAction]
2  public ActionResult  Index()
3   {
4        return View();
5   }

View
Code

葡京在线官网 21葡京在线官网 22

6  ViewBag、ViewData和TempData概述

Action运维完后的回传值平日是ActionResult体系或其衍生体系(Derived
Class),事实上,ActionResult是1个抽象类,如ViewResult用来回传三个View、RedirectResult用来将网页重定向、Content回传文字内容、FileResult回传二进制文书档案等,那个均是继承ActionResult。MvcHandler从Controller获得ActionResult之后,就会起来运营ActionResult提供的ExecuteResult方法,并将运转结果响应到客户端,那时Controller的职分正是实现。

【06】浅谈ASP.NET MVC
控制器
   

(叁)必须继续自ASP.NET
MVC内建的Controller体系,或得以达成IController自定义连串;

(4)三者均是容器,即能积攒常量,变量,也能储存集合。

 

4  调节器方法连串

6  ViewBag、ViewData和TempData概述

【07】The framework of revelation  of 
Professional Asp.net MVC 5

8  调整器定义

View
Code

 1 //方法1:RedirectResult作返回类型
 2 public RedirectResult redirectResult()
 3         {
 4             return Redirect("https://www.google.com.hk/");//具体的URL
 5         }
 6 
 7 //方法1: ActionResult作返回类型
 8 public  ActionResult redirectResult()
 9         {
10             return Redirect("https://www.google.com.hk/");//具体的URL
11         }
1  public TempDataDictionary TempData { get; set; }
2  public ViewDataDictionary ViewData { get; set; }
3  public object ViewBag { [return: Dynamic] get; }

(二)HTTP动词限定属性

【二六】下壹雨后苦笋:ASP.NET WebAPI

4  调控器方法种类

葡京在线官网 23

从如上代码能够计算出Controller应怀有如下多少个基本原则:

 葡京在线官网 24

(2)TempData存款和储蓄临时数据,并且安装的变量在被第3遍读取后会被移除,即TempData设置的变量只好被读取2回。(why?)

也可将public改为private,到达体贴的效应。

若调节器某些方法特性为NonAction,尽管该Action方法是“公开办法”,也会告知ActionInvoker不要选定这些Action来运作。主要用途:a.爱抚Controller中的特定公开药方法毫无发布到Web上;b.功用尚未开荒成功将在实行安排,临时不想将此措施删除。

1 [HttpGet]
2  public ActionResult  Index()
3  {
4       return View();
5  }

葡京在线官网 25

五.2一般方法

 

(二)承袭关系

eg1:ViewResult

葡京在线官网 26葡京在线官网 27

eg6:RedirectToRouteResult

相似地,在定义Controller时,采纳三种办法,即得以达成IController和继续Controller。

5  Controller动作结果

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace MVCControllerDemo.Controllers
 8 {
 9     public class ControllerDemoController : Controller
10     {
11         //
12         // GET: /ControllerDemo/
13 
14         [HttpGet]
15         public ActionResult Index()
16         {
17             return View();
18         }
19     }
20 }

葡京在线官网 28葡京在线官网 29

【1陆】浅谈信赖注入

View
Code

 (3)例子

View
Code

View
Code

(一)如下只是给出方法样式,不做具体代码。

RouteConfig.cs

伍.贰一般方法

 1        [HttpGet]
 2         public ActionResult  Index()
 3         {
 4              return View();
 5         }
 6 
 7         [HttpGet]
 8         public ActionResult Create()
 9         {
10             return View();
11         }
12 
13 
14         [HttpPost]
15         public ActionResult Create(FormCollection fc)
16         {
17             //UpdateToDB(fc);
18             return RedirectToAction("Index");
19         }

贰   Controller连串和艺术

(1)授权过滤器(Authorization
Filters);

5.一调整器动作结果类型(ActionResult)  

 1 public ViewDataDictionary ViewData
 2         {
 3             get
 4             {
 5                 if (this._viewDataDictionary == null)
 6                 {
 7                     this._viewDataDictionary = new ViewDataDictionary();
 8                 }
 9                 return this._viewDataDictionary;
10             }
11             set
12             {
13                 this._viewDataDictionary = value;
14             }
15         }

在MVC框架中,System.Web.Mvc命名空间下的ControllerBase中,对ViewBag、ViewData和TempData三个属性的概念如下

(贰)HTTP动词限定属性

 注释:倘若动作方法上并未有嵌套任何限制属性,那么客户端浏览器发送放四HTTP动词都会自动选定到对应的Action。

(叁)结果过滤器(Result Filters);

 HttpGet、HttpPost、HttpDelete、HttpPut、HttpHead、HttpOptions、HttpPatch属性(Attributes)都以动作方法选定器的1部分。如下例子讲授HttpGet属性,即表示唯有当客户端浏览器发送HTTP
GET供给时,ActionInvoker才会选定到这些Action:

1 private ActionResult  Index()
2  {
3        return View();
4   }

(二)动作过滤器(Action Filters);

陆.1三者在MVC框架里的定义

一般来说,在概念一个方法时,我们常规性地根据章程是不是有再次来到值总结为有重回值和无重临值两大类,调控器的面目是类,调控器的action本质是措施,若是根据数学集结来定义,那么调节器是类的一个子集,同理,调整器action是情势的二个子集,因而,在研商调整器以及控制器action时,我们是足以才用研究类和艺术的貌似思维的。

【12】浅谈缓存技巧在ASP.NET中的运用 
     

(2)Controller名称必须以Controller结尾;

【2二】浅谈ASP.NET MVC8大类扩大

eg2:EmptyResult

 当通过ActionInvoker选定Controller内的当众办法时,ASP.NET
MVC还有另3性格格称为”动作方法选定器(Action Method
Selector)”,该选定器能够套用在动作方法上,以便ActionInvoker”选定”适当的Action。

8.2 继承Controller

【03】浅谈Google
Chrome浏览器(操作篇)(下)

【08】 https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/aspnet-mvc-controllers-overview-cs

除开,还有其余壹种过滤器,即重写过滤器,它同意为全局或调节器的暗中认可集结制定例外景况。

ViewBag

葡京在线官网 30葡京在线官网 31

 1 public JsonResult jsonResult()
 2  2         {
 3  3            TechInfoCompanay jsonCompany=new TechInfoCompanay(){id="S001",CompanyName="信息科技有限公司"};
 4  5             return Json(jsonCompany,JsonRequestBehavior.AllowGet);
 5  6          }
 6  7 
 7  8 
 8  9  //定义一个公司类
 9 10     public class TechInfoCompanay
10 11     {
11 12         public string id { set; get; }
12 13         public string CompanyName { set; get; }
13 14     }

8.1 实现IController

葡京在线官网 32葡京在线官网 33

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 using System.Reflection;
 8 namespace MVCControllerDemo.Controllers
 9 {
10     public class ControllerDemoController : IController
11     {
12         public String Index()
13         {
14             return "<h1>Index</h1>";
15         }
16 
17 
18 
19         public void Execute(System.Web.Routing.RequestContext requestContext)
20         {
21             string action = requestContext.RouteData.Values["action"].ToString();
22             Type typ = typeof(ControllerDemoController);
23             MethodInfo md = typ.GetMethod(action, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
24             if (md == null)
25             {
26                 requestContext.HttpContext.Response.Write("<h1>404</h1>");
27             }
28             else
29             {
30                 string s = md.Invoke(this, null).ToString();
31                 requestContext.HttpContext.Response.Write(s);
32             }
33         }
34     }
35 }

葡京在线官网 34葡京在线官网 35

【11】浅谈ASP.NET
页面之间传值的二种艺术

 1        [HttpGet]
 2         public ActionResult  Index()
 3         {
 4              return View();
 5         }
 6 
 7         [HttpGet]
 8         public ActionResult Create()
 9         {
10             return View();
11         }
12 
13 
14         [HttpPost]
15         public ActionResult Create(FormCollection fc)
16         {
17             //UpdateToDB(fc);
18             return RedirectToAction("Index");
19         }

【19】浅谈ASP.NET MVC 模型

葡京在线官网 36葡京在线官网 37

【08】浅谈ASP.NET MVC
视图
 

7  ActionResult解说

(四)例外过滤器(Exception Fiters);

View
Code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using System.Web.Routing;
 7 
 8 namespace MVCControllerDemo
 9 {
10     public class RouteConfig
11     {
12         public static void RegisterRoutes(RouteCollection routes)
13         {
14             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15 
16             routes.MapRoute(
17                 name: "Default",
18                 url: "{controller}/{action}/{id}",
19                 defaults: new { Controller = "ControllerDemo", action = "Index", id = UrlParameter.Optional }
20             );
21         }
22     }
23 }
 1 public ViewDataDictionary ViewData
 2         {
 3             get
 4             {
 5                 if (this._viewDataDictionary == null)
 6                 {
 7                     this._viewDataDictionary = new ViewDataDictionary();
 8                 }
 9                 return this._viewDataDictionary;
10             }
11             set
12             {
13                 this._viewDataDictionary = value;
14             }
15         }

8.2 继承Controller

ControllerDemoController.action

【07】浅谈ASP.NET MVC
路由
   

RouteDemoController

(三)必须承继自ASP.NET
MVC内建的Controller类别,或落到实处IController自定义体系;

(1)授权过滤器(Authorization
Filters);

【20】浅谈ASP.NET MVC 单元测试

若将[HttpGet]改为[HttpPost],浏览器将找不到能源。

【1八】浅谈基于APS.NET身份验证

View
Code

 1 public JsonResult jsonResult()
 2  2         {
 3  3            TechInfoCompanay jsonCompany=new TechInfoCompanay(){id="S001",CompanyName="信息科技有限公司"};
 4  5             return Json(jsonCompany,JsonRequestBehavior.AllowGet);
 5  6          }
 6  7 
 7  8 
 8  9  //定义一个公司类
 9 10     public class TechInfoCompanay
10 11     {
11 12         public string id { set; get; }
12 13         public string CompanyName { set; get; }
13 14     }
 1 //无返回类型
 2 public  void  functionName(形参)
 3 {
 4      //to add your content
 5 }
 6 
 7 //有返回类型
 8 public  返回类型  functionName(形参)
 9 {
10      //to add your content
11     return   与方法返回类型相匹配的结果;
12 }
 1 //无返回类型
 2 public  void  functionName(形参)
 3 {
 4      //to add your content
 5 }
 6 
 7 //有返回类型
 8 public  返回类型  functionName(形参)
 9 {
10      //to add your content
11     return   与方法返回类型相匹配的结果;
12 }

(三)结果过滤器(Result Filters);

【14】浅谈ASP.NET
程序发表进度
         
 

(肆)例外过滤器(Exception Fiters);

1 [NonAction]
2  public ActionResult  Index()
3   {
4        return View();
5   }

View
Code

TempData

除了,还有其它壹种过滤器,即重写过滤器,它同意为大局或调节器的私下认可集合制定例外景况。

平时,在概念贰个情势时,大家常规性地依据办法是或不是有再次回到值归咎为有重临值和无重回值两大类,调节器的真面目是类,调节器的action本质是艺术,假如依照数学群集来定义,那么调节器是类的叁个子集,同理,调控器action是方法的三个子集,由此,在切磋调整器以及调节器action时,大家是足以才用切磋类和方法的貌似思维的。

1 [HttpGet]
2  public ActionResult  Index()
3  {
4       return View();
5  }

那种办法相比常用。

调节器动作(具体的action)再次来到的结果叫做调整器动作结果,动作结果是调整器重返给浏览器请求的始末。ASP.NET
MVC框架辅助各类标准项目标动作结果。

(三)ViewBag和ViewData属性是均等份数据的例外表现格局,贰者的不一致之处在于前者是一个动态指标,可感到其钦赐任性属性(动态属性老马作为数据字典的Key)。

(2)继承关系

  • 多谢您的翻阅,若有不足之处,接待指教,共同学习、共同进步。
  • 博主网站:http://www.cnblogs.com/wangjiming/。
  • 极少一些作品利用读书、参考、引用、抄袭、复制和粘贴等二种措施组成而成的,大多数为原创。
  • 如您喜爱,麻烦推荐一下;如你有新主见,招待建议,邮箱:二〇一六17772八@qq.com。
  • 能够转发该博客,但必须盛名博客来源。

1个操作方法一旦被入选就会立时施行,并且只要它回到三个结出,再次回到的结果也会跟着实施,ASP.NET
MVC 5提供三种格局,分别列于如下:

  • 即身份验证
  • 授权
  • 操作前后管理
  • 结果前后管理
  • 错误管理。

10  版权

【04】浅谈ASP.NET框架 
 

葡京在线官网 38葡京在线官网 39

小说内容包蕴:Controller概述、Controller连串和方法、Controller运维进度、Controller方法连串、ViewData\ViewBag\TempData分析、ActionResult解说、Controller定义和参考文献,剩下有关Controller其余内容在本篇文章中不讲,如Controller激活机制(Controller类型解析、Controller类型缓存、Controller的释放和对话状态作为调控等)、ControllerFactory、ControllerBuilder等,除此而外,文中有些过分涉及到底层的内容,思考篇幅等要素,只是简短谈起了一晃,并未有做深远剖析,依据前期处境,会掂量思索是否再写一篇通透到底深切的平底Controller的。

8.1 实现IController

1  public ActionResult redirectResult()
2         {
3             return Redirect("https://www.google.com.hk/");//具体的URL
4         }
5 
6         public RedirectToRouteResult redirectToRouteResult()
7         {
8             return RedirectToAction("Index");
9         }

九  参考文献

以上为Controller的中央运作进程。Controller在运行时还有1层所谓的动作过滤器机制,分为如下两种为主项目:

【06】Professional Asp.net MVC 4

【08】 https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/aspnet-mvc-controllers-overview-cs

1  public TempDataDictionary TempData { get; set; }
2  public ViewDataDictionary ViewData { get; set; }
3  public object ViewBag { [return: Dynamic] get; }
1 [HttPost]
2 public ActionResult  Index()
3 {
4        return View();
5 }

【01】http://www.cnblogs.com/wangiqngpei557/p/3390812.html

【02】http://www.cnblogs.com/yaozhenfa/p/asp\_net\_mvc\_controller.html

 1 //方法1:ContentResult作为返回类型
 2 public ContentResult Index()
 3         {
 4              return Content("Hello World");
 5         }
 6 
 7 
 8 //方法2:ActionResult作为返回类型
 9 public ActionResult Index()
10         {
11             return Content("Hello World");
12         }

在MVC框架中,System.Web.Mvc命名空间下的ControllerBase中,对ViewBag、ViewData和TempData多个属性的定义如下

 1 // Generated by .NET Reflector from C:\Users\WJM\documents\visual studio 2013\Projects\DEMOMVC\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll
 2 namespace System.Web.Mvc
 3 {
 4     using System;
 5     
 6     public abstract class ActionResult
 7     {
 8         protected ActionResult()
 9         {
10         }
11         
12         public abstract void ExecuteResult(ControllerContext context);
13     }
14 }
 1 // Generated by .NET Reflector from C:\Users\WJM\documents\visual studio 2013\Projects\DEMOMVC\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll
 2 namespace System.Web.Mvc
 3 {
 4     using System;
 5     
 6     public abstract class ActionResult
 7     {
 8         protected ActionResult()
 9         {
10         }
11         
12         public abstract void ExecuteResult(ControllerContext context);
13     }
14 }

小说内容包罗:Controller概述、Controller体系和章程、Controller运营进度、Controller方法体系、ViewData\ViewBag\TempData分析、ActionResult演讲、Controller定义和参考文献,剩下有关Controller别的内容在本篇文章中不讲,如Controller激活机制(Controller类型解析、Controller类型缓存、Controller的释放和对话状态作为调节等)、ControllerFactory、ControllerBuilder等,除此而外,文中某些过于涉及到底层的故事情节,思虑篇幅等成分,只是轻巧谈到了一下,并未有做深刻剖析,依照早先时期情况,会掂量思量是还是不是再写一篇彻底深远的平底Controller的。

【17】浅谈HtmlHelper

上述为Controller的为主运维进度。Controller在运营时还有一层所谓的动作过滤器机制,分为如下三种为主项目:

 注释:假使动作方法上未曾嵌套任何限制属性,那么客户端浏览器发送放肆HTTP动词都会自行选定到对应的Action。

葡京在线官网 40

葡京在线官网 41葡京在线官网 42

葡京在线官网 43葡京在线官网 44

【03】http://www.360doc.com/content/12/0611/15/29831\_217456312.shtml

在翻阅本篇博文时,提议结合上篇博文:详解ASP.NET MVC
路由
  一齐读书,效果说不定会更好些。  

1   // GET: /ControllerDemo/
2         public EmptyResult  Index()
3         {
4             return null;
5         }

操作过滤器能够视作直接使用于操作方法或决定器类的特征来编排,或作为在全局过滤器列表中登记的独门类来编排。倘使筹划将编写制定的操作过滤器作为特色来使用,那么它必须承袭自FilterAttribute或它的别的子类,如ActionFilterAttribute。不作为脾性应用的大局操作过滤器未有对那么些基类的供给。无论使用哪个路由,操作过滤器帮助的过滤活动都由完成的接口决定。

葡京在线官网 45葡京在线官网 46

 eg4:JsonResult

 1  [Dynamic]
 2         public object ViewBag
 3         {
 4             [return: Dynamic]
 5             get
 6             {
 7                 Func<ViewDataDictionary> viewDataThunk = null;
 8                 if (this._dynamicViewDataDictionary == null)
 9                 {
10                     if (viewDataThunk == null)
11                     {
12                         viewDataThunk = () => this.ViewData;
13                     }
14                     this._dynamicViewDataDictionary = new DynamicViewDataDictionary(viewDataThunk);
15                 }
16                 return this._dynamicViewDataDictionary;
17             }
18         }

ASP.NET 定义了以下两种衍生型别。

ControllerDemoController.action

 ActionResult是Action运维后的回传型别,不过当Action回传ActionResult的时候,其实并不带有那一个ActionResult(比如ViewResult)的运作结果,而是涵盖运转这一个ActionResult时所需的数码,当MvcHandler从Controller赚取ActionResult之后才会去运作出ActionResult的结果。在ActionResult抽象类中只有定义了1个ExecuteResult()方法。

葡京在线官网 47葡京在线官网 48

当Controller被MvcHandler选中之后,下一步即是透过ActionInvoker选定合适的Action来运转。在Controllr中的每个Action能够定义0到多少个参数,ActionInvoker会依靠当下的RouteValue与客户端传来的数据策动好可传唱Action参数的数量,最后正式调用Controller中被选中的十分Action方法。参数字传送入的性质都是透过一种叫做模型绑定(Model
Binding)机制,从RequestContext赚取数据,并将数据对应或传播方法的参数中,让Action不用再像此前ASP或ASP.NET
Web
Forms中平日利用的Request.Fomr或Request.QueryString等目的来取得客户端的数量,通过自定义的模子绑定,以至足以让您对应除去Request.Form或Request.QueryString以外的数码来自,比方:HTTP
Cookies、HTTP Headers等等。

View
Code

葡京在线官网 49

View
Code

TempData

【二四】浅谈ASP.NET 高端话题

 在ASP.NET MVC框架中,对ActionResult定义如下:

4.二 操作过滤器

 (一)承继ActionResult的动作结果

RouteConfig.cs

View
Code

eg1:ViewResult

1  public ActionResult redirectResult()
2         {
3             return Redirect("https://www.google.com.hk/");//具体的URL
4         }
5 
6         public RedirectToRouteResult redirectToRouteResult()
7         {
8             return RedirectToAction("Index");
9         }

View
Code

(4)3者均是容器,即能积累常量,变量,也能积攒集结。

 1 //方法1: ViewResult作为返回类型
 2 public ViewResult Index()
 3         {
 4             return View();
 5         }
 6 
 7 
 8 
 9  //方法二: ViewResultBase作为返回类型
10 public ViewResultBase Index()
11         {
12             return View();
13         }
14 
15 //方法三: ActionResult作为返回类型
16 public ActionResult Index()
17         {
18             return View();
19         }

 当需求出示接收窗体消息时,能够成立五个同名的Action,分别用[HttpGet](呈现窗体HTML)和[HttpPost](接收窗体输出的值)属性来界定。

eg2:EmptyResult

Controller本人便是1个类(Class),该类型有大多办法(Method),那些措施中一旦是堂皇冠冕格局(public
method)就会被视为是二个动作(Action)或动作方法(Action
Method),只要动作存在,就足以因此该动作方法接收客户端传来的供给与调控响应的查检(View)

View
Code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using System.Web.Routing;
 7 
 8 namespace MVCControllerDemo
 9 {
10     public class RouteConfig
11     {
12         public static void RegisterRoutes(RouteCollection routes)
13         {
14             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15 
16             routes.MapRoute(
17                 name: "Default",
18                 url: "{controller}/{action}/{id}",
19                 defaults: new { Controller = "ControllerDemo", action = "Index", id = UrlParameter.Optional }
20             );
21         }
22     }
23 }

葡京在线官网 50

(一)Controller必须为公开体系;

Action运转完后的回传值经常是ActionResult种类或其衍生类别(Derived
Class),事实上,ActionResult是一个抽象类,如ViewResult用来回传多少个View、RedirectResult用来将网页重定向、Content回传文字内容、FileResult回传2进制文书档案等,那几个均是承袭ActionResult。MvcHandler从Controller获得ActionResult之后,就会起来运维ActionResult提供的ExecuteResult方法,并将运转结果响应到客户端,那时Controller的职务便是落成。

View
Code

在翻阅本篇博文时,提议组成上篇博文:详解ASP.NET MVC
路由
  一同读书,效果只怕会越来越好些。  

4.① 动作方法选定器

eg5:RedirectResult

(三)ViewBag和ViewData属性是千篇1律份数据的例外表现情势,贰者的分化之处在于前者是三个动态目的,可以为其钦点率性属性(动态属性宿将作为数据字典的Key)。

【05】Professional Asp.net MVC 5

 

View
Code

eg3:ContentResult

eg:举个自定义重临string的法门

葡京在线官网 51

ViewData

葡京在线官网 52葡京在线官网 53

eg6:RedirectToRouteResult

View
Code

【06】Professional Asp.net MVC 4

Controller(调控器)在ASP.NET
MVC中肩负调控全部客户端与服务端的并行,并且肩负谐和Model与View之间数据传递,是ASP.NET
MVC框架核心。Controller为ASP.NET
MVC框架的着力组成都部队分,其利害攸关肩负管理浏览器请求,并决定响应什么内容给浏览器,但并不担当调节内容应什么突显(View的任务)。

View
Code

 HttpGet、HttpPost、HttpDelete、HttpPut、HttpHead、HttpOptions、HttpPatch属性(Attributes)都以动作方法选定器的1有的。如下例子解说HttpGet属性,即表示唯有当客户端浏览器发送HTTP
GET须求时,ActionInvoker才会选定到这么些Action:

(贰)Controller名称必须以Controller结尾;

(2)例子

九  参考文献

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using System.Web.Routing;
 7 
 8 namespace MVCControllerDemo
 9 {
10     public class RouteConfig
11     {
12         public static void RegisterRoutes(RouteCollection routes)
13         {
14             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15 
16             routes.MapRoute(
17                 name: "Default",
18                 url: "{controller}/{action}/{id}",
19                 defaults: new { Controller = "ControllerDemo", action = "Index", id = UrlParameter.Optional }
20             );
21         }
22     }
23 }

葡京在线官网 54葡京在线官网 55

【23】再谈ASP.NET MVC Routing

RouteDemoController

Controller本身便是三个类(Class),该项目有众多艺术(Method),那几个点子中一经是冠冕堂皇格局(public
method)就会被视为是叁个动作(Action)或动作方法(Action
Method),只要动作存在,就能够通过该动作方法接收客户端传来的渴求与垄断响应的视察(View)

3个操作方法1旦被入选就会立时实行,并且只要它回到二个结出,再次回到的结果也会跟着实践,ASP.NET
MVC 伍提供七种情势,分别列于如下:

(二)TempData存款和储蓄一时数据,并且安装的变量在被第2回读取后会被移除,即TempData设置的变量只可以被读取三次。(why?)

7  ActionResult解说

八  调控器定义

若调控器有个别方法特性为NonAction,纵然该Action方法是“公开药方法”,也会告知ActionInvoker不要选定那几个Action来运维。首要用途:a.珍爱Controller中的特定公开药格局毫无发表到Web上;b.功用尚未开采产生就要实行配备,一时半刻不想将此办法删除。

(一)如下只是给出方法样式,不做具体代码。

相关文章