Я wokring в новом приложении mvc для Asp.Net. Я определил маршрут с пользовательским ограничением, который устанавливает текущую культуру приложения из URL-адреса. Я пытаюсь управлять локализации для моего приложения путем создания пользовательских IRequestCultureProvider
который выглядит следующим образом:Asp.Net core get RouteData value from url
public class MyCustomRequestCultureProvider : IRequestCultureProvider
{
public Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
var language= httpContext.GetRouteValue("language");
var result = new ProviderCultureResult(language, language);
return Task.FromResult(result);
}
}
Мой MyCustomRequestCultureProvider
ударил по каждому запросу, который хорошо. Моя проблема заключается в том, что в конвейере MVC метод DetermineProviderCultureResult
у моего провайдера попадает перед процессом маршрутизации, поэтому httpContext.GetRouteValue("language")
всегда возвращает null.
В предыдущей версии MVC, я имел Possiblity вручную обработать мой URL через процесс маршрутизации, делая это
var wrapper = new HttpContextWrapper(HttpContext.Current);
var routeData = RouteTable.Routes.GetRouteData(wrapper);
var language = routeData.GetValue("language")
я не могу найти способ сделать то же самое в новом framewrok права Теперь. Кроме того, я хочу использовать данные маршрута, чтобы узнать мои langugae, анализируя мою строку url с некоторыми строковыми функциями, чтобы найти язык не является вариантом.
Это [вопрос и ответ] (http://stackoverflow.com/questions/35829426/optionally-override-request-culture-via-url-route-in -an-asp-net-core-1-0-applica/35970676 # 35970676) может помочь –
@nboisvert Не могли бы вы решить эту проблему? – SherleyDev
@SherleyDev см. Мой ответ –