2009-06-03 5 views
0

私の現在のasp.net mvcプロジェクトでは、ユーザーはログインできる必要があります。ログインすると、オプションで環境設定のセットを設定できます。これらのプリファレンスの一部は一般的です(たとえば、サイト言語などが優先されます)が、このプロジェクトのみに固有のものもあります(事前定義されたクエリのフィルタリングなど)。ユーザー設定属性はどのように作成する必要がありますか?

これらの設定は私のサイトの多くの異なる場所に存在するので、これを相互関係として定義します。私は、それが所有するすべてのアクションではなく、これを処理する属性を持っていることが好ましいでしょう。

今後のプロジェクトで再利用するのに十分な一般的な属性を設計するには、どのようにすればよいですか?また、すべてのプロジェクト固有の設定を使用するには現在のプロジェクトについて十分に知っていますか?

--EDIT--
設定を取得して設定することは問題ではありません。 UserSettingsクラスをasp.netプロファイルプロバイダに接続しました。 私の問題は、コントローラからこのクロスコンタミネーションを属性に引き出す方法です。

答えて

0

テキストファイル(xmlまたはデータベース)にその環境設定を保存している場合は、それらの環境設定をユーザーからロードしてセッションに格納するクラス(例:Utility.UserPreferences)を作成するのが簡単ではありません変数は、それは...ただのアイデア...私はそれを行うだろう方法です、それはシンプルだし、それはだ

// Login sucessfully... 
Utility.UserPreferences pref = new Utility.UserPreferences(CurrentUser.ID); 


// to retrieve a preference 
string language = Utility.UserPreferences.GetPreferences(
         Utility.UserPreferences.PreferencesType.Language, 
         CurrentUser.ID); 

...更新に/そして

namespace Utility 
{ 
    public class UserPreferences 
    { 
     public UserPreferences(int userID) 
     { 
      // Load Preferences from text file, xml file or DB 
      string loadedPreferences = "us|20|yes|no"; 

      HttpContext.Current.Session["userPreferences"] = loadedPreferences; 
     } 

     public void Savepreferences(string[] pref, int userID) 
     { 
      // Save preferences for that user 
     } 

     public static string GetPreferences(PreferencesType type) 
     { 
      string[] pref = HttpContext.Current.Session["userPreferences"].ToString().Split('|'); 

      switch (type) 
      { 
       case PreferencesType.Language: return pref[0]; 
       case PreferencesType.ShowHowManyResults: return pref[1]; 
       case PreferencesType.ShowNavigation: return pref[2]; 
       case PreferencesType.GetEmailAlerts: return pref[3]; 
      } 
     } 

     public enum PreferencesType 
     { 
      Language, ShowHowManyResults, ShowNavigation, GetEmailAlerts 
     } 
    } 
} 

取得するために、それらを呼び出す列挙型を使用してあなたはもっと多くの設定を保持するためにクラスを変更する必要があるので...

+0

設定を取得して設定することは問題ではありません。 UserSettingsクラスをasp.netプロファイルプロバイダに接続しました。 問題は、コントローラーからこのクロスコンタミネーションを属性にプルするにはどうすればよいですか。 –

0

ユーザー設定の場合は、ASP.NETプロファイルプロバイダフレームワークを使用する必要があります。一部のリソース:

プロファイルプロバイダのフレームワークの上の取り扱い属性ベースのユーザの嗜好を構築することができますが、私はあなたのアプリに特有のものだろうと思っています。

+0

私はプロファイルプロバイダを認証に使用しています。プリファレンスについては、私は自分のクラスに接続しています。しかし、これらの嗜好がどこから来ているかは本当に問題ではありません。問題は、私がこの情報をどのように扱うかです。 –

関連する問題