亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 擴展 > MVC > 正文

請求如何進入ASP.NET MVC框架

2024-09-06 20:44:38
字體:
來源:轉載
供稿:網友

一、前言

  對于WebForm開發,請求通常是一個以.aspx結尾的url,對應一個物理文件,從代碼的角度來說它其實是一個控件(Page)。而在MVC中,一個請求對應的是一個Controller里的Action。熟悉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"  );}

  RouteCollection是一個Route集合,Route封裝了名稱、url模式、約束條件、默認值等路由相關信息。其中,MapPageRoute是RouteCollection定義的方法,而MapRoute是MVC擴展出來的(擴展方法的好處就是可以在不修改原有代碼的情況下添加所需的功能)。它們的目的都是一樣的,創建一個Route對象,添加到集合當中;我們也可以new 一個Route對象,然后調用RouteCollection.Add,效果是一樣的。下面我們主要關注MVC的實現過程,WebForm其實也是類似的。

三、分析源碼

  接下來我們看MVC是如何利用路由機制實現擴展的。路由機制是通過一個UrlRoutingModule完成的,它是一個實現了IHttpModule的類,路由模塊已經默認幫我們注冊好了。HttpModule通過注冊HttpApplication事件參與到管道處理請求中,具體是訂閱HttpApplication某個階段的事件。路由機制就是利用這個原理,UrlRoutingModule訂閱了PostResolveRequestCache 事件,實現url的映射。為什么是該事件呢?因為該事件的下一步就要完成請求和物理文件的映射,所以必須要此之前進行攔截。核心代碼如下:

public class UrlRoutingModule : IHttpModule {  public RouteCollection RouteCollection {    get {      if (_routeCollection == null) {        //全局的RouteCollection集合        _routeCollection = RouteTable.Routes;      }      return _routeCollection;    }    set {      _routeCollection = value;    }  }   protected virtual void Init(HttpApplication application) {    //注冊PostResolveRequestCache事件    application.PostResolveRequestCache += OnApplicationPostResolveRequestCache;  }   private void OnApplicationPostResolveRequestCache(object sender, EventArgs e) {    //創建上下文    HttpApplication app = (HttpApplication)sender;    HttpContextBase context = new HttpContextWrapper(app.Context);    PostResolveRequestCache(context);  }   public virtual void PostResolveRequestCache(HttpContextBase context) {    //1.獲取RouteData    RouteData routeData = RouteCollection.GetRouteData(context);    if (routeData == null) {      return;    }    //2.獲取IRouteHandler    IRouteHandler routeHandler = routeData.RouteHandler;    if (routeHandler == null) {           }         //RequestContext保證了HttpContext和RouteData,在后續使用    RequestContext requestContext = new RequestContext(context, routeData);     context.Request.RequestContext = requestContext;     //3.獲取IHttpHandler    IHttpHandler httpHandler = routeHandler.GetHttpHandler(requestContext);     //重新映射到處理程序    context.RemapHandler(httpHandler);  }}              
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性受xxxx白人性爽| 91国产视频在线| 日本欧美国产在线| 日韩免费中文字幕| 中文字幕国产日韩| 欧美激情va永久在线播放| 伊人久久大香线蕉av一区二区| 精品国产欧美一区二区五十路| 国产日韩欧美视频| 一区二区欧美激情| 欧美高清在线观看| 色婷婷综合成人| 久久成人精品一区二区三区| 少妇av一区二区三区| 日韩精品免费在线观看| 国产精品美女www| 欧美激情中文字幕在线| 日韩欧美在线视频日韩欧美在线视频| 欧美日产国产成人免费图片| 国产精品白嫩美女在线观看| 欧美日韩精品国产| 国产成人激情小视频| 91在线中文字幕| 欧美最猛性xxxxx(亚洲精品)| 91精品久久久久久久久中文字幕| 在线观看欧美视频| 岛国av一区二区在线在线观看| 欧洲永久精品大片ww免费漫画| 欧美日韩一区二区三区在线免费观看| 亚洲成av人乱码色午夜| 国产欧美日韩免费看aⅴ视频| 欧美视频专区一二在线观看| 国产精品久久9| 日本一区二区在线免费播放| 欧美日韩国产va另类| 永久免费毛片在线播放不卡| 成人性生交大片免费看视频直播| 欧美成人精品不卡视频在线观看| 亚洲国产天堂久久综合| 91日本在线观看| 69久久夜色精品国产69乱青草| 日本精品一区二区三区在线| 国产精品久久久久久网站| 日韩最新在线视频| 国产日韩在线观看av| 亚洲天堂av图片| 国产精品久久久久高潮| 国产精品久久国产精品99gif| 国外成人在线直播| 久久久免费电影| 国内外成人免费激情在线视频网站| 国内精品久久久久久中文字幕| 97精品视频在线观看| 欧美日韩国产精品专区| 欧美成人激情视频免费观看| 久久久免费精品视频| 欧美成年人视频网站| 欧美交受高潮1| 国产自摸综合网| 亚洲精品xxxx| 国产一区二区欧美日韩| 亚洲电影免费观看高清完整版在线| 久久好看免费视频| 欧美黑人性猛交| 情事1991在线| 欧美性猛交xxxx富婆| 久久综合网hezyo| 91精品国产九九九久久久亚洲| 国产一区二区三区高清在线观看| www.亚洲男人天堂| 国产精品免费小视频| 国产亚洲精品久久久优势| 亚洲成人激情图| 精品视频—区二区三区免费| 九色精品美女在线| 欧美性做爰毛片| 亚洲最新在线视频| 欧美激情精品久久久久久久变态| 欧美性视频精品| 国产精品亚洲网站| 中国日韩欧美久久久久久久久| 91在线中文字幕| 久久这里只有精品视频首页| 久久久久久av| 欧美做爰性生交视频| 午夜精品在线视频| 精品亚洲国产成av人片传媒| 国产精品久久91| 欧美综合第一页| 亚洲国内高清视频| 美女扒开尿口让男人操亚洲视频网站| 81精品国产乱码久久久久久| 久久手机免费视频| 91日本视频在线| 亚洲欧美视频在线| 欧美一级大片在线免费观看| 日韩美女视频在线观看| 国产精品久久久久久久久粉嫩av| 亚洲欧洲日本专区| 久久久国产在线视频| 亚洲图片在线综合| 精品视频在线观看日韩| 欧美亚洲一区在线| 国产精品免费久久久久久| 欧美亚洲成人免费| 91亚洲人电影| 国产午夜精品视频免费不卡69堂| 国产国语刺激对白av不卡| 国产精品99久久99久久久二8| 中文字幕亚洲欧美日韩2019| 亚洲毛片在线免费观看| 欧美精品免费在线观看| 国产亚洲精品va在线观看| 国产乱人伦真实精品视频| 久久久精品免费视频| 国产在线视频一区| 高清一区二区三区四区五区| 日韩电影大片中文字幕| 日韩中文字幕视频在线| 91探花福利精品国产自产在线| 国产精品一香蕉国产线看观看| 久久亚洲一区二区三区四区五区高| 亚洲视频欧美视频| 欧美激情免费观看| 国产欧美婷婷中文| 精品久久久国产精品999| 国产精品精品久久久久久| 欧美一级片久久久久久久| 欧美日韩爱爱视频| 2018中文字幕一区二区三区| 日韩经典中文字幕在线观看| 亚洲欧美日韩高清| 久久国产精品久久久久久| 亚洲91精品在线观看| 欧美午夜激情在线| 国产成人综合一区二区三区| 黄色91在线观看| 成人国内精品久久久久一区| 亚洲美女av在线| 啪一啪鲁一鲁2019在线视频| 2019国产精品自在线拍国产不卡| 成人精品久久久| 美女精品视频一区| www.亚洲一二| 亚洲精品白浆高清久久久久久| y97精品国产97久久久久久| 一个人www欧美| 国产一区二区美女视频| 欧美国产日韩一区二区| 欧美精品在线网站| 成人午夜两性视频| 亚洲精品99久久久久中文字幕| 久久精品欧美视频| 亚洲国产私拍精品国模在线观看| 国产精品视频一区二区高潮| 亚洲欧美在线第一页| 国产精品久久久久9999| 中文字幕日韩免费视频| 综合136福利视频在线| 国内精品久久久久久久| 大荫蒂欧美视频另类xxxx| 成人福利在线视频| 欧美精品免费在线| 国产精品自拍视频|