使用Routing实现

 

系列文章目录

一、伪静态方式(使用URLRewriter)
     1、改写方法    (文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933737.html)
     2、回发时处理方法(文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933791.html)
     3、将Aspx改写成HTml方法(文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933836.html)

二、真实改写(使用System.Web.Routing)(文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933893.html)


 

 

一:引入 System.Web.Routing 程序集

  System.Web.Routing程序集.Net Framework3.5中。Add Reference,引入之后,在 Web.Config 的 <assemblies> 中可以看到添加了一行,如果没有,请手工添加。
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>

二:加入 UrlRoutingModule 配置
System.Web.Routing 是基于 httpModules 来实现的,所以还应该在 Web.Config 的 <httpModules> 节点中加上:
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, 

Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>



三:在程序启动时注册 Url 路由规则

  这要在 Global.asax 中控制,在 Application_Start() 方法中注册路由条目。如果你理解 TCP/IP 网络的路由就很容易理解这里的路由,其实是一个道理。TCP/IP 网络的路由说的是数据包要去往哪里应该经过哪个网关,而这里的路由是指要访问哪个实际的资源应该走哪个 IRouteHandler 实例。

Global.asax 的注册路由的代码如下:

 

  using System.Web.Routing;
using
 Useful;
        
protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
        }

        
#region 自定义方法
        
/// <summary>
        
/// 注册Url路由
        
/// </summary>
        
/// <param name="routes"></param>
        
/// Test:http://localhost:5876/test-11查看结果
        private void RegisterRoutes(RouteCollection routes)
        {
            IRouteHandler routerHander 
= new RssRouteHandler();
            Route DealedRoute 
= null;
            
//对于 /type-num 这种规则的 Url 会转到 rssRouteHandler 实例来处理 
            DealedRoute = new Route("{type}-{num}", routerHander);
            routes.Add(DealedRoute);
        }
        
#endregion

 

相关文章: