你的位置:首页 > 软件开发 > ASP.net > 请求如何进入ASP.NET MVC框架

请求如何进入ASP.NET MVC框架

发布时间:2016-03-25 10:00:09
一、前言  对于WebForm开发,请求通常是一个以.aspx结尾的url,对应一个物理文件,从代码的角度来说它其实是一个控件(Page)。而在MVC中,一个请求对应的是一个Controller里的Action。熟悉asp.net的朋友都知道,asp.net请求实际都是交给Htt ...

一、前言

  对于WebForm开发,请求通常是一个以.aspx结尾的url,对应一个物理文件,从代码的角度来说它其实是一个控件(Page)。而在MVC中,一个请求对应的是一个Controller里的Action。熟悉get='_blank'>asp.net的朋友都知道,asp.net请求实际都是交给HttpHandler处理(实现了IHttpHandler的类型)。无论是.aspx,.ashx,.asmx 还是MVC里的Action,请求都会交给HttpHandler。具体是在管道事件中,会根据请求创建一个HttpHandler,并执行它的PR方法。对于aspx和ashx都很好理解,因为它们本身就实现了IHttpHandler接口,而MVC的Controller和Action都和HttpHandler没有关系,它是如何实现的呢?接下来我们就看一个请求是如何进入mvc框架内部的。

二、例子

  WebForm和MVC都是建立在asp.net平台上的,Webform出现得比较早,那么MVC是如何做到在不影响底层框架,实现扩展的呢?这主要得益于asp.net的路由机制。路由机制并不属于MVC,WebForm也可以使用它。它的目的是让一个请求与物理文件分离,原理是通过映射关系,将请求映射到指定的HttpHandler。例如我们也可以将一个/Admin/User.aspx?name=张三 的请求映射成可读性更好的/Admin/张三。下面是两种url的注册方式:

    public static void RegisterRoutes(RouteCollection routes)    {      //MVC      routes.MapRoute(        name: "Default",        url: "{controller}/{action}/{id}",        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }      );      //WebForm      routes.MapPageRoute(        routeName: "WebForm",        routeUrl: "Admin/{user}",        physicalFile: "~/Admin/User.aspx"      );    }

原标题:请求如何进入ASP.NET MVC框架

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。