【问题标题】:Routing with a default document使用默认文档路由
【发布时间】:2011-07-14 13:26:12
【问题描述】:

我真的很难理解路由。这可能以前被问过,但我找不到或没有问正确的方法......

我正在移植现有的经典 asp 站点,并从添加管理仪表板开始。我需要的是,当用户只需输入站点名称时,默认文档 (default.asp) 就会被加载,但是如果他们输入 {site}/Admin 则路由会接管。我的默认路由控制器称为“AdminController”,我将项目设置为在 /Admin 中启动。这行得通,但其他任何事情都行不通,除非我回退到新项目附带的基本默认路由。

愿望:

  1. {site} -> {site}/default.asp
  2. {site}/Admin -> 管理员/索引操作
  3. {site}/Admin/Shops -> Shops/索引操作
  4. {site}/Admin/Shops/Edit/{id} -> Shops/Edit(id) 操作

这是我的路线,我卡在某个地方:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.RouteExistingFiles = true;
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "EditShop", // Route name
            "Shops/Edit/{slug}", // URL with parameters
            new
            {
                controller = "Shops",
                action = "Edit",
                slug = ""
            } // Parameter defaults
        );

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

        // default route for this app
        routes.MapRoute(
            "Admin", // Route name
            "Admin/", // URL with parameters
            new { controller = "Admin", action = "Index" } // Parameter defaults
        );

       //  default route for this app (this works for all cases except default.asp)
        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Admin", action = "Index", id = UrlParameter.Optional } 
        );

        routes.MapRoute("NothingMatched", "{*url}",
                        new {controller = "Error", action = "Http404"});
    }

【问题讨论】:

    标签: model-view-controller routing


    【解决方案1】:

    我看到您将 EditShop 映射到 Shops/Edit。这可能应该映射到 Admin/Shops/Edit 以实现您想要的。我认为另一条路线没有任何问题,但我可能是错的。

    【讨论】:

    • 谢谢,这让我继续前进。在没有明确指定的情况下仍然无法加载默认页面。尝试创建一个 PageRouteHandler() 没有运气。必须有办法告诉 IIS 使用路由,除非可以加载默认页面。
    • 我们遇到了同样的问题 - 如果没有指定路由或匹配的 iis 应该寻找默认文档!希望很快会...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2014-01-28
    • 2016-10-30
    相关资源
    最近更新 更多