代码之家  ›  专栏  ›  技术社区  ›  Eyeball

ASP.NET 4.0 Web窗体路由

  •  3
  • Eyeball  · 技术社区  · 15 年前

    我有一个现有的网站,我想转换为使用路由,阅读后 Scott Guthrie's post here ,我构建了一个适用于大多数情况的工作示例。但是,由于现有站点上的页面并非都与特定模式匹配,因此我需要检查数据库以确定要使用的路由(destination.aspx页面)。

    例如,大多数页面如下所示:

    http://www.mysite.com/people/person.html

    这很好-我可以很容易地路由到查看\人.aspx页,因为'人民'目录。

    但有些页面是这样的:

    http://www.mysite.com/category_page.html http://www.mysite.com/product_page.html

    这需要检查数据库以查看是路由到view\ u category.aspx页还是view\ u product.aspx页。 这就是我被困的地方。 我是否创建一个IRouteHandler来检查数据库并返回路由?还是有更好的办法?我找到的唯一符合的代码是 the answer to this question .

    3 回复  |  直到 8 年前
        1
  •  0
  •   Robert Harvey    15 年前

    如果您不介意这样做,最干净的解决方案是:

    http://www.mysite.com/pages/category_page.html
    

    在ASP.NETMVC中,通过在根路由上指定默认控制器和操作方法,这种情况的处理方式会有点不同。

        2
  •  0
  •   kervin    15 年前

    路由处理程序不检查数据库。它将所有请求发送给处理程序 脚本。就是那个检查数据库的脚本。

    我的注册路线看起来像。。。

        private static void RegisterRoutes()
        {
            Route currRoute = new Route("{resource}.axd/{*pathInfo}", 
                                        new StopRoutingHandler());
            RouteTable.Routes.Add( "IgnoreHandlers", currRoute);
    
            currRoute = new Route("{urlname}",
                                new EPCRouteHandler("~/Default.aspx"));
            currRoute.Defaults = new RouteValueDictionary {{"urlname", "index.html"}};
            RouteTable.Routes.Add( "Default", currRoute);
        }
    

    参数作为URL变量添加到响应脚本。

        3
  •  0
  •   Community CDub    8 年前

    对于陷入同样情况的人,我最终修改了 this answer 检查数据库并返回正确的ASPX页。