ASP.NET MVC路由问题。没有映射路线

时间:2013-04-19 10:05:44

标签: asp.net-mvc localization routing routedebugger

我是ASP.NET MVC的新手,我遇到了问题,我无法解决。我花了两天时间搜索谷歌,但仍然没有。

所以,我的情况是: 我正在尝试使用路由在我的ASP.NET MVC应用程序中实现本地化。

www.mysite.com/Home/Index - 默认(俄语)

www.mysite.com/en/Home/Index - 英文

所以我正在注册路线:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapRoute(
                        "Default",
                        "{controller}/{action}",
                        new { controller = "Home", action = "Index"},
                        new { controller = "^[a-zA-z]{4,}$" }
             );

            routes.MapRoute(
                        "Localization",
                        "{lang}/{controller}/{action}",
                        new { lang = "en", controller = "Home", action = "Index" }
            );
        }

导航到默认值:www.mysite.com/Home/Index运行正常。 但是当我尝试导航到www.mysite.com/en/Home/Index时,我得到了404 error

更有趣的是,RouteDebugger看不到我的新路线:

RouteDebugger All Routes Table

添加更多新路由,更改映射顺序甚至删除所有路由都不会做任何事情。 似乎路由{controller}/{action}/{id}只是MVC的默认路由,它是“在我之前”添加的。

那么,可能是什么问题?我完全不知道!我看过其他网站的Rote Debugger截图,并显示了它们的路线。例如,其他一些网站:Screenshot

也许我必须改变web.config中的内容?我完全糊涂了。请帮忙! 非常感谢你的时间!

2 个答案:

答案 0 :(得分:1)

在MVC 4中,RouteConfig.cs存储在App_Start中。如果您从MVC 4项目向导创建项目,它应该为您连接所有项目。如果没有,您需要从global.asax.cs

调用它
protected void Application_Start()
{
    // other stuff ...
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    // other stuff ...
}

另外,IIRC,MVC 3项目向导直接在Application_Start设置所有默认路由,因此您需要删除它们(或根据具体情况将它们移动到RegisterRoutes

答案 1 :(得分:1)

按顺序读取RoutConfig"默认{controller} / {action}"非常贪心移动您的"本地化" "默认"以上的路由代码路线,看看是否有帮助。