我有一个ASP.NET和MVC5的小问题(我开始使用MVC.NET).直到昨天,一切都很好!但今天,我不知道为什么,我有"自定义路线注释"的问题.
我有一个控制器"Prodouits"与此动作:
[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:Keys [0] =>"MS_DirectRouteMatches"Keys [1] =>"controller"
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); }
谢谢你的帮助 :-)
编辑:没有人有解决方案?再次感谢你!