我是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
看不到我的新路线:
添加更多新路由,更改映射顺序甚至删除所有路由都不会做任何事情。
似乎路由{controller}/{action}/{id}
只是MVC的默认路由,它是“在我之前”添加的。
那么,可能是什么问题?我完全不知道!我看过其他网站的Rote Debugger截图,并显示了它们的路线。例如,其他一些网站:Screenshot
也许我必须改变web.config
中的内容?我完全糊涂了。请帮忙!
非常感谢你的时间!
答案 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}"非常贪心移动您的"本地化" "默认"以上的路由代码路线,看看是否有帮助。