2009-04-08 21 views
2

各ユーザーに、そのユーザーのデータベースに保存されている特定の設定があるとします。 例えば:UnitSystemれるUILanguageタイムゾーン、...のhttpリクエストは、我々はユーザーの好みにアクセスする必要が行われ ASP.NET MVC - アプリケーションのグローバル設定を処理する方法

(例えば UnitSystemタイムゾーン .. 。)正確にデータを処理し、ビューを正しい 言語にレンダリングします。

プログラムの実行中にユーザー設定を保存/アクセスする正しい方法は何ですか?

  1. 読むユーザーの好みに一度各HTTP要求のために、データベースからユーザーの好みを読むときに、アプリケーションにユーザーがログインとセッション変数に保存します。
  2. ユーザーがアプリケーションにログインしてクッキーに保存すると、ユーザーの設定が一度読み取られます。

MVCベースのアプリケーションでグローバル設定をどのように処理しますか?あなたのケースでは

答えて

1

、私はおそらくセッションの設定とクッキーを保存し、この順序でそれらをチェックします:

  1. 変数のためのセッションを確認してください。
  2. セッションに含まれていない場合は、セッションでCookieとストアのCookie値を確認します。
  3. Cookieに含まれていない場合は、データベースを確認し、Cookieおよびセッションに保存します。

まだ場合にのみ、絶対に必要なDBを押すことで、パフォーマンスを最大化しながら、その方法は、あなたがセッションタイムアウトを処理することができるはずクッキーと&ユーザーはかなり透過的にオフに。

もちろん、ユーザーがDB内の設定を変更した場合でも、Cookieとセッションを更新するメカニズムが必要です。これらのプリファレンスが同じアプリケーションに設定されていると仮定すると、それほど大きな取引ではありません。

+0

アドバイスをいただきありがとうございます。 CasperOneは興味深いと思われるプロファイルプロバイダを使用することを提案しましたが、私は他の目的のために使用するかもしれませんが、このケースでは自分のコードで処理する方が好きです。 – xraminx

1

これは、ASP.NETでプロファイルプロバイダが使用するものです。ある「ASP.NETプロファイルプロパティの概要」、と題しMSDNのドキュメントのセクションを見てみましょう:

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

提供するものの一つがない場合は、その後、(独自のプロファイルプロバイダを作成することができます必要に応じて)プロファイルデータをロード/保存します。

+0

大きなチップをありがとう。面白いと思うが、妥当な時間内に同じ機能をコーディングすることができれば、裏側のものを処理する自動ツールを避けることを好む。私は詳細とメンテナンスをより簡単にコントロールすることができます。 – xraminx

+0

@xraminix:プロファイルクラスはツールではなく、レスポンス、リクエストなどのようなASP.NETモデルの本質的な部分です。モデルをプラグインするだけで拡張可能になります。 – casperOne

関連する問題