カスタム ビューエンジンを使用して asp.net mvc の文字列パターンを置き換える必要がありますか?

StackOverflow https://stackoverflow.com/questions/2543055

質問

ローカライズされた 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 にカルチャーを組み込むことについて説明します。それが役に立てば幸い!

MVC 用 Cultured View エンジン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top