Asp.Net(三) Routing

其实在第一篇中就提到了 Routing.

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // 这是一个约束。
            routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}/{id}", // 带有参数的 URL
                new { controller = "Home", action = "Index", id = "" }, // 参数默认值
          new { id = @"[\d]*" } //id必须为数字 还可以加上约束         }

            );
   }

上面 是Global.asax里面的 URL 访问规则.

 

复制代码
 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}/{Year}/{Month}/{Day}", // 带有参数的 URL
                new { controller = "Blogs", action = "Archive", Year = "2008", Month = "", Day = "" } // 参数默认值
            );            
}

http://localhost:14593/Blogs/Archive/[Year]/[Month]/[Day]

这样 就支持了 这样的规则.

 

 

我不光是想自定义规则,同时还想自定义解析规则肿么办呢 

    public class MyPage:IHttpHandler
    {
        public RequestContext RequestContext { get; private set; }
        public MyPage(RequestContext context)
        {
            this.RequestContext = context;
        }
        public virtual void ProcessRequest(HttpContext context){
            //这里面写解析的规则  
            //context.Server.Execute(        RequestContext.RouteData.Values["page"].ToString().Replace("_","/")+".aspx"
        }
        public bool IsReusable {
            get { return false; }
        }
    }

    public class MyRouteHandler : IRouteHandler
    {
        #region IRouteHandler 成员
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new MyPage(requestContext);
        }
   }

 调用

routes.Add(new Route("{page}.aspx", new MyRouteHandler()));

 

这个时候 就是执行 自定义的解析

 

IIS支持问题? 其实在IIS版本不同 方法也不用。 这个用到再看吧

PS:参考资料

http://blog.csdn.net/ITniao/article/details/4068930

http://www.cnblogs.com/chsword/archive/2008/08/27/System_Web_Routing_1.html

http://www.cnblogs.com/Terry-greener/archive/2011/10/27/2226602.html

posted @ 2012-06-18 19:26  CallMeTommy  阅读(180)  评论(0编辑  收藏  举报