1

我有一个名为 HomeController 的控制器、一个名为 Home 的文件夹和一个名为 Index 的视图。我还有另一个名为 TestEditController 的控制器、一个名为 TestEdit 的文件夹和一个名为 Index 的视图。出于某种原因,当我编译它时,URL:http://localhost:4097/并不指向 Home/Index,而是指向 TestEdit/Index。我去了属性>开始操作>特定页面...并将文本框留空。注意:放一个/不起作用。我已经清理、构建、重建项目/解决方案。但仍然遇到同样的问题。这是我的 Global.asax 文件:

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

        routes.MapRoute(
            "SectionsData", // Route name
            "{controller}/{action}/{id}/{prodno}/{instid}/{section}", // URL with parameters
            new { controller = "TestEdit", action = "Sections", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional, section = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "Sections", // Route name
            "{controller}/{action}/{id}/{prodno}/{instid}", // URL with parameters
            new { controller = "TestEdit", action = "Index", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "MainProducts", // Route name
            "{controller}/{action}/{id}/{prodno}", // URL with parameters
            new { controller = "Home", action = "Main", id = UrlParameter.Optional, prodno = UrlParameter.Optional  } // Parameter defaults
        );

        routes.MapRoute(
            "Catalogs", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Products", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }
4

2 回答 2

3

你的匹配太笼统了。试试这个:

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

    routes.MapRoute(
        "SectionsData", // Route name
        "TestEdit/Sections/{id}/{prodno}/{instid}/{section}", // URL with parameters
        new { controller = "TestEdit", action = "Sections", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional, section = UrlParameter.Optional } // Parameter defaults
    );

    routes.MapRoute(
        "Sections", // Route name
        "TestEdit/Index/{id}/{prodno}/{instid}", // URL with parameters
        new { controller = "TestEdit", action = "Index", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional } // Parameter defaults
    );

    routes.MapRoute(
        "MainProducts", // Route name
        "Home/Main/{id}/{prodno}", // URL with parameters
        new { controller = "Home", action = "Main", id = UrlParameter.Optional, prodno = UrlParameter.Optional  } // Parameter defaults
    );

    routes.MapRoute(
        "Catalogs", // Route name
        "Home/Products/{id}", // URL with parameters
        new { controller = "Home", action = "Products", id = UrlParameter.Optional } // Parameter defaults
    );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

}

...但实际上,您不需要很多这些路线。

于 2012-07-17T20:27:56.590 回答
1

因为 SectionsData 和 Sections Route 的所有其他参数都是可选的,所以它们将在默认路由之前匹配。

于 2012-07-17T20:15:25.890 回答