カスタム ビューエンジンを使用して asp.net mvc の文字列パターンを置き換える必要がありますか?
-
23-09-2019 - |
質問
ローカライズされた ASP.NET MVC サイトを用意します。ローカリゼーション機能は、URL に 2 桁の言語 ID を追加します。/es/ページ。URL に言語 ID が見つからない場合、サイトはユーザーのブラウザー カルチャに切り替わります。大丈夫です。ただし、ハードコーディングされた href タグ、アクションリンクなどの混合物であるサイトのハイパーリンクには基本言語 ID が含まれていないため、サイトをクリックすると設定されたカルチャが失われ、サイトはユーザーのブラウザー カルチャに戻ります。 。
私の (怠惰な) 考えは、外部サイトを指していないすべての href 値をローカライズされた URL (例:/es/ を含めます)。それ以外の場合は、すべてのサイト リンクを更新してカルチャ コードを含める必要があります。
これはただのバカなのでしょうか?それとも、カスタム ビュー エンジンやその他のアプローチを使用して行うのが合理的でしょうか?
正しい解決策はありません
他のヒント
私の答えは(現時点で)次のとおりです。
アプリにはベース コントローラーがあり、そこに以下を追加しました。
if (PathLanguageCode == "" && requestContext.HttpContext.Session["LanguageCode"] != null && requestContext.HttpContext.Request.RequestType == "GET")
{
requestContext.HttpContext.Response.Redirect("/" + requestContext.HttpContext.Session["LanguageCode"] + requestContext.HttpContext.Request.RawUrl);
}
この例では、PathLanguageCode 変数がどのように定義されているかを示していませんが、文字列値を置き換えることなく、これを一元的に処理する方法を示すには少なくとも十分です。
このアプローチの 1 つの欠点は、最終的に多くのリダイレクトを行うことになるため、サイトが検索エンジンなどにとって実際には優しくないことです。
もしよろしければ、私たちがとったアプローチをご覧ください。URL にカルチャーを組み込むことについて説明します。それが役に立てば幸い!
所属していません StackOverflow