在asp.net mvc中找到了感兴趣的路由。
让我们用asp.net mvc 4项目创建清晰的空解决方案。
路线:
//more detail route
routes.MapRoute(
name: "{lang}/category/{category}",
url: "{lang}/category/{category}",
defaults: new { controller = "Home", action = "Index" }
);
//more general route
routes.MapRoute(
name: "{lang}",
url: "{lang}",
defaults: new { controller = "Home", action = "Index" }
);
HomeController中的:
[HttpGet]
public ActionResult Index(string category = null)
{
return View("~/Views/Home/index.cshtml");
}
任何人都可以说为什么它返回“/ en”所有Url.Action调用除了“/ en / category / 1”之外的网址? 我的意思是,如果我去,例如/ samplePage / blabla - 它按预期工作(在html:/ en中生成url),但是当我转到“/ en / category / 1”时 - 生成的url在html中更改为“烯/类别/ 1”!
Url.Action("Index","Home", new {lang="en"}); //different behaviour for "/en" and "/en/category/1" urls
来自网址的当前路由数据是否会影响网址生成功能?
更新 这里讨论了同样的问题:UrlHelper.Action includes undesired additional parameters。由@AndyNichols提供