2

したがって、私はasp.net mvcを初めて使用し、多言語のサイトを構築していますが、言語固有のすべてのオブジェクトのすべてのコンストラクターにLanguageIdを渡し続けたくありません。システム全体でこのIDをasp.netmvcに保存するための最良の方法は何ですか?ユーザーにとってはCookieに保存されると思いますが、それは正しい方法ですか?

また、languageIdはデータベースから取得され、すべての言語固有のラベルもリソースファイルではなくデータベースに保存されます。

4

3 に答える 3

4

正直なところ、私はDarinに同意しない必要があります(マルチスレッドマルチサーバー環境の場合のように、これは問題を引き起こす可能性があります)。

これにはCookieをお勧めします。これは、ユーザーが前回のアクセス後にサイトに再度アクセスしたときに簡単に取得できます。

于 2013-01-30T21:47:31.110 に答える
0

ログインがセッション駆動型の場合はlanguage-id、セッションオブジェクトに保存できます。このオブジェクトは、ユーザーがログインするたびに入力される可能性があります。セッションが失われると、ログインも失われます。

Cookieログインを使用している場合は、をCookieに保存しlanguage-idます。

または、LanguageIDをルートの一部にすることを検討してください。

routes.MapRoute(
    "New",
    "{lang}/{controller}/{action}/{id}",
    new { lang = "en", controller = "Home", action = "Index", id = UrlParameter.Optional },
    new { lang = "en|de|it|es|fr" }
);

ユーザーがログインしたらすぐに、ルートの一部として言語を含むルートにリダイレクトします。@Url.actionlinkリンクをレンダリングするために使用します。それらには常に言語IDが含まれます。

于 2013-01-31T01:04:20.557 に答える
0

特定の問題に対して少し異なるアプローチを取り、 HttpRequest.UserLanguagesから利用できるブラウザー言語を使用するのはどうですか?

Requestそうすれば、何かを渡す必要はありません。たとえば、コントローラーでオブジェクトを取得できる場所であればどこでもこれを取得できるため、次のようになります。Request.UserLanguages

于 2013-01-31T02:01:37.787 に答える