私は新しいAsp.Netコアmvcアプリケーションでwokringです。 URLから現在のアプリカルチャーを設定するカスタム制約付きのルートを定義しました。私はこのようになりますカスタムIRequestCultureProvider
を作成することによって、私のアプリのローカライズを管理しようとしている:Asp.NetコアURLからRouteData値を取得
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
okですすべての要求、上でヒットしました。私の問題は、MVCパイプラインで、私のプロバイダのDetermineProviderCultureResult
メソッドがルーティングプロセスの前にヒットしているので、httpContext.GetRouteValue("language")
は常にnullを返します。
MVCの以前のバージョンでは、私は新しいframewrok右に同じことを行うための方法を見つけることができません手動でこの
var wrapper = new HttpContextWrapper(HttpContext.Current);
var routeData = RouteTable.Routes.GetRouteData(wrapper);
var language = routeData.GetValue("language")
を行うことによって、ルーティングプロセスを通じて、私のURLを処理する可能性について持っていたが今。また、ルートデータを使用して私の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は私の答えを見る –