使用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;
{
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