<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      返璞歸真 asp.net mvc (2) - 路由(System.Web.Routing)

      [索引頁]
      [源碼下載]


      返璞歸真 asp.net mvc (2) - 路由(System.Web.Routing)


      作者:webabcd


      介紹
      System.Web.Routing - 此命名空間提供用于 URL 路由的類,通過該類可以使用不映射到物理文件的 URL
      • IRouteHandler - 路由處理程序接口,自定義的路由處理程序都要實現這個接口
      • RequestContext - 封裝所請求的路由的相關信息和當前的 http 上下文信息
      • RouteData - 所請求的路由的相關信息
      • RouteCollection - 路由集合
      • RouteValueDictionary - 不區分大小寫的 key/value 字典表
      • Route - 路由的相關信息


      示例
      1、MyHandler.cs
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;

      using System.Web.Routing;

      namespace MVC.RoutingDemo
      {
          
      /// <summary>
          
      /// 路由處理程序
          
      /// </summary>

          public class MyRouteHandler : IRouteHandler
          
      {
              
      /*
               * IRouteHandler - 路由處理程序接口,自定義的路由處理程序都要實現這個接口 
               *     該接口有一個方法 IHttpHandler GetHttpHandler(RequestContext requestContext)
               *     此方法需要返回一個處理該路由的 http 處理程序 (HttpHandler)
               * RequestContext - 封裝所請求的路由的相關信息和當前的 http 上下文信息
               *     RequestContext.HttpContext - 當前的 http 上下文信息
               *     RequestContext.RouteData - 所請求的路由的相關信息
               
      */


              
      public IHttpHandler GetHttpHandler(RequestContext requestContext)
              
      {
                  
      return new MyHttpHandler(requestContext);
              }

          }


          
      /// <summary>
          
      /// 自定義的 http 處理程序,由路由決定使用哪個 http 處理程序
          
      /// </summary>

          public class MyHttpHandler : IHttpHandler
          
      {
              
      public RequestContext RequestContext getprivate set; }
              
              
      public MyHttpHandler(RequestContext context)
              
      {
                  RequestContext 
      = context;
              }


              
      public void ProcessRequest(HttpContext httpContext)
              
      {
                  
      /*
                   * RouteData - 所請求的路由的相關信息
                   *     RouteData.Values - 一個字典表(key - 路由參數;value - 路由值)
                   *     RouteData.DataTokens - 自定義需要傳遞的數據,也是一個字典表
                   *     RouteData.GetRequiredString(string key) - 獲取指定的路由參數所對應的路由值
                   
      */


                  httpContext.Response.Write(
      "相關參數為:<br />");
                  
      foreach (var dic in RequestContext.RouteData.Values)
                  
      {
                      httpContext.Response.Write(dic.Key 
      + " : " + dic.Value + "<br />");
                  }


                  httpContext.Response.Write(
      "相關Token為:<br />");
                  
      foreach (var dic in RequestContext.RouteData.DataTokens)
                  
      {
                      httpContext.Response.Write(dic.Key 
      + " : " + dic.Value + "<br />");
                  }

              }


              
      public bool IsReusable
              
      {
                  
      get return false; }
              }

          }


          
      /// <summary>
          
      /// 如果有 n 多的路由處理程序,為了方便調用,減少代碼,我們可以將其寫成一個 Factory 類,如下:
          
      /// </summary>

          public class RouteHandlerFactory : IRouteHandler
          
      {
              
      private string _name;
              
      public RouteHandlerFactory(string name)
              
      {
                  _name 
      = name;
              }


              
      public IHttpHandler GetHttpHandler(RequestContext requestContext)
              
      {
                  
      if (_name == "My")
                      
      return new MyHttpHandler(requestContext);

                  
      return new MyHttpHandler(requestContext);
              }

          }


          
      /// <summary>
          
      /// 演示不經過路由,根據 web.config 中的 HttpHandler 相關配置,由此 HttpHandler 直接處理相關請球。具體配置見 Global.asax
          
      /// </summary>

          public class XXXHttpHandler : IHttpHandler
          
      {
              
      public XXXHttpHandler()
              
      {

              }


              
      public void ProcessRequest(HttpContext context)
              
      {
                  context.Response.Write(context.Request.Url.ToString());
              }


              
      public bool IsReusable
              
      {
                  
      get return false; }
              }

          }

      }

      2、Web.config
      <?xml version="1.0"?>
      <configuration>
        
      <system.web>
          
      <httpHandlers>

            
      <!--
            配置一個自定義的 HttpHandler,用于處理后綴名為 xxx 的頁面
            如果不需要將 *.xxx 交給路由處理,而是直接讓指定的 HttpHandler 處理,請參看 Global.asax 中的配置
            
      -->
            
      <add verb="*" path="*.xxx" type="MVC.RoutingDemo.XXXHttpHandler" />

          
      </httpHandlers>
          
      <httpModules>
            
            
      <!--
            UrlRoutingModule - 用于匹配 asp.net 應用程序中的路由的 http 請求
                該模塊找到匹配路由后,會檢索 IRouteHandler 對象,以查找該路由,然后從該路由處理程序獲取一個 IHttpHandler 對象,并將該對象用作當前請求的 http 處理程序
            
      -->
            
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            
          
      </httpModules>
        
      </system.web>
      </configuration>

      3、Global.asax.cs
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.Mvc;
      using System.Web.Routing;

      namespace MVC
      {
          
      // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
          
      // visit http://go.microsoft.com/?LinkId=9394801

          
      public class MvcApplication : System.Web.HttpApplication
          
      {
              
      public static void RegisterRoutes(RouteCollection routes)
              
      {
                  
      /* 路由方向:自上而下,查找到匹配的就去處理,而不會繼續往下做匹配 */

                  
      /*
                   * RouteCollection - 路由集合
                   *     RouteCollection.IgnoreRoute() - 指定的地址不由路由處理
                   *     RouteCollection.Add() - 新增一個路由配置
                   *     RouteCollection.MapRoute() - 映射一個路由(Add() 方法的簡化版,內部會自動調用 MvcRouteHandler)
                   
      */


                  
      // .asd 文件不走此路由
                  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                  
      // .xxx 文件不走此路由
                  routes.Add(new Route("{resource}.xxx/{*pathInfo}"new StopRoutingHandler()));


                  
      /*
                   * RouteValueDictionary - 不區分大小寫的 key/value 字典表
                   * Route - 路由的相關信息
                   *     Route.Url - 路由的 url 匹配模式,{ } 內的為需要匹配的路由參數名
                   *     Route.Defaults - 路由參數的默認值
                   *     Route.RouteHandler - 路由對應的路由處理程序
                   *     Route.DataTokens - 自定義需要傳遞的數據
                   *     Route.Constraints - 約束參數值的有效性(可以是正則表達式(不區分大小寫),也可以是實現了 IRouteConstraint 的對象)
                   
      */


                  Route route 
      = new Route(
                      
      "Routing/{parent}/{child}",

                      
      // RouteValueDictionary - 可以接收一個匿名對象為參數,屬性名轉換為 key, 屬性值轉換為 value
                      new RouteValueDictionary(new { parent = "ria", child = "silverlight", controller = "Product", action = "Index" }),

                      
      new RoutingDemo.MyRouteHandler()
                  );
                  route.DataTokens 
      = new RouteValueDictionary(new { token1 = "abc", token2 = "xyz" });

                  
      // HttpMethodConstraint - 實現了 IRouteConstraint 接口的類,用于約束 http 方法
                  route.Constraints = new RouteValueDictionary(new { parent = @"^[a-zA-Z]+$", httpMethod = new HttpMethodConstraint("GET") });

                  
      // 將路由添加進路由集合,名稱可以隨便設置,但必須唯一(也可以不設置路由名稱)
                  routes.Add("MyRoutingDemo", route);
                  
      // routes.Add(route);


                  
      // * - 路由也支持通配符
                  
      // {*param} - 代表匹配任意值,其中路由參數名為 param
                  routes.Add(new Route("Wildcard/{*param}"new RouteValueDictionary(new { controller = "Product", action = "Index" }), new RoutingDemo.MyRouteHandler()));


                  
      // MapRoute() 封裝了 Add(), MapRoute() 內部會自動調用 MvcRouteHandler
                  
      // 其中必須要有 controller 項和 action 項
                  
      // 其中設置 namespaces 參數相當于 route.DataTokens["Namespaces"] = namespaces;
                  routes.MapRoute(
                      
      "Products",
                      
      "ProductList/{pageIndex}",
                      
      new { controller = "Product", action = "Index", pageIndex = 0 }
                  );

                  routes.MapRoute(
                      
      "Default",                                              // Route name
                      "{controller}/{action}/{id}",                           // URL with parameters
                      new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
                  );
              }


              
      protected void Application_Start()
              
      {
                  RegisterRoutes(RouteTable.Routes);

                  
      // 調試路由(需要 RouteDebug.dll),調用如下語句后,會在每個頁面都顯示詳細的路由信息
                  
      // RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
              }

          }

      }



      // 部署在 iis 應注意
      // 配置通配符映射程序,類似如下地址
      // C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll   
      // 不要勾選“確認文件是否存在”


      OK
      [源碼下載]
      posted @ 2009-04-21 09:06  webabcd  閱讀(6746)  評論(10)    收藏  舉報
      主站蜘蛛池模板: 久久精品波多野结衣| 黑人av无码一区| 欧美一区二区三区欧美日韩亚洲| 国产精品亚洲а∨天堂2021| 午夜免费视频国产在线| 深夜av在线免费观看| 女人被狂躁c到高潮| 国产亚洲精品VA片在线播放| 日韩精品亚洲专在线电影| 国产成人一区二区三区视频免费 | 色综合色综合色综合频道| 国产成人免费高清激情视频| 师宗县| 国产成人8X人网站视频| 国产精品人人爽人人做我的可爱| 成人午夜福利精品一区二区| Y111111国产精品久久久| 麻豆精品在线| 亚洲乱妇熟女爽到高潮的片| 蜜臀久久99精品久久久久久| 人妻综合专区第一页| 亚洲日韩在线中文字幕第一页 | 亚洲国产精品无码av| 国内少妇偷人精品免费| 国精品午夜福利视频| 国产精品v片在线观看不卡| 亚洲一区二区av高清| 国产在线无码视频一区二区三区| 亚洲欧美人成电影在线观看| 九九热在线视频免费观看| 欧美丰满熟妇xxxx性| 九九热视频在线精品18| 亚洲欧美激情在线一区| 国产999精品2卡3卡4卡| 91亚洲国产成人久久精品| 亚洲精品www久久久久久| 国产精品午夜福利小视频| 亚洲国产中文字幕精品| 惠水县| 日韩在线视频网| 成人无套少萝内射中出|