У меня небольшая проблема с ASP.NET и MVC5 (я начинаю с MVC.NET). До вчерашнего дня все отлично работало! Но сегодня я не знаю, почему, у меня проблемы с «Аннотации пользовательских маршрутов».ASP.NET MVC5 Маршрут Аннотации MS_DirectRouteMatches
У меня есть Controler "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: клавиши [0] => "MS_DirectRouteMatches" клавиши [1] => "контроллер"
Values[0] => //A list of only 1 RouteData with my 6 parameters into it...
Values[1] => Produits
Если удалить мой "Custom Route Annontation", все работает замечательно, но URL-адрес очень печален ...
Есть ли у кого-нибудь идеи о проблеме и решении? Спасибо всем за помощь!
EDIT: Дополнительная информация о проблеме. У меня есть «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);
}
Спасибо за помощь :-)
EDIT: Никто не имеет решения? Еще раз спасибо!
Является ли ваш '' RouteData' в RouteCollectionRoute'? Если это так, то этот вопрос может быть полезен: http://stackoverflow.com/q/22416561 –