【发布时间】:2014-11-01 20:49:14
【问题描述】:
我对 ASP.NET 和 MVC5 有一个小问题(我从 MVC.NET 开始)。 直到昨天,一切都很好!但是今天,我不知道为什么,“自定义路由注释”有问题。
我有一个具有此操作的控制器“Produits”:
[Route("{culture}/Produits/{nom_groupe}/{nom}-{id}")]
public ActionResult Detail(string nom_groupe, string nom, string id)
{
// ...
return View();
}
在我看来,当我调用“Url.Action(...)”时,URL 是好的。但是当我进入页面时,RouteData 似乎是坏的(RouteData 没有正确恢复)。
看看我的 RouteData : 键[0] => "MS_DirectRouteMatches" 键[1] => “控制器”
Values[0] => //A list of only 1 RouteData with my 6 parameters into it...
Values[1] => Produits
如果我删除我的“自定义路由注释”,一切正常,但 URL 非常难过......
有人知道问题和解决方案吗? 感谢大家的帮助!
编辑: 有关该问题的更多信息。 我有一个语言的“BaseController”。我重写了“BeginExecuteCore”方法。 有代码:
protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
string cultureName = RouteData.Values["culture"] as string;
// Attempt to read the culture cookie from Request
if (cultureName == null)
cultureName = Request.UserLanguages != null && Request.UserLanguages.Length > 0 ? Request.UserLanguages[0] : null; // obtain it from HTTP header AcceptLanguages
// Validate culture name
cultureName = CultureHelper.GetImplementedCulture(cultureName); // This is safe
if (RouteData.Values["culture"] as string != cultureName)
{
// Force a valid culture in the URL
RouteData.Values["culture"] = cultureName.ToLowerInvariant(); // lower case too
// Redirect user
Response.RedirectToRoute(RouteData.Values);
}
// Modify current thread's cultures
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
return base.BeginExecuteCore(callback, state);
}
感谢您的帮助:-)
编辑: 没人有解决办法吗? 再次感谢!
【问题讨论】:
-
你的
RouteData是RouteCollectionRoute吗?如果是这样,那么这个问题可能会有用:stackoverflow.com/q/22416561
标签: c# asp.net asp.net-mvc routes