0

我是 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 所有路由表

添加更多新路线、更改它们的映射顺序甚至删除我所有的路线都无济于事。似乎该路由{controller}/{action}/{id}只是“在我之前”添加的 MVC 的默认路由。

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

也许我必须改变一些东西web.config?我完全糊涂了。请帮忙!非常感谢您的宝贵时间!

4

2 回答 2

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视情况将它们移入)。

于 2013-04-19T15:41:16.260 回答
1

RoutConfig 按顺序读取,“默认 {controller}/{action}”非常贪婪。将您的“本地化”路线代码移到“默认”路线上方,看看是否有帮助。

于 2013-08-20T20:49:43.043 回答