Asp.net mvc 2 如何解决ASP.NETMVC路由映射冲突?

Asp.net mvc 2 如何解决ASP.NETMVC路由映射冲突?,asp.net-mvc-2,routes,conflict,Asp.net Mvc 2,Routes,Conflict,我在MVC应用程序中映射了两条路线: public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Project",

我在MVC应用程序中映射了两条路线:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Project",
        "{controller}/{projectid}/{action}/{id}",
        new { controller = "Project", action = "Index", id = "" });

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

}
在大多数情况下,这些都不会带来问题,但我在尝试调用/Account/LogOn视图时遇到了麻烦。我的ActionLink语法如下所示(我尝试了几种变体,包括空路由值等):



浏览此视图会引发404错误(“找不到资源”)。理想情况下,我希望避免大量返工,那么避免这些冲突的最佳方法是什么?

您是否尝试过控制器文字的这种变化

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Project",
        "Project/{projectid}/{action}/{id}",
        new { controller = "Project", action = "Index", id = "" });

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
    );
}
这会吸引人的:而且


但它将传递给第二个rounte。是吗?

您是否尝试过控制器文字的这种变化

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Project",
        "Project/{projectid}/{action}/{id}",
        new { controller = "Project", action = "Index", id = "" });

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
    );
}
这会吸引人的:而且


但它将传递给第二个rounte。是吗?

Gaaa!这永远是最简单和最明显的答案。就这样了。谢谢,嘎阿!这永远是最简单和最明显的答案。就这样了。谢谢