2010-12-19 9 views
1

ビジネスレイヤに2つのクラスを作成しました。List <>タイプのプロパティを持つオブジェクトをリピータにバインドします

id(int)、pass(s​​tring)、およびprivileges(Privilege)の各プロパティを持つUsersと、Privilegeという名前のid(int)およびprivilegeName(string)

私はすべてのユーザーを返すメソッドを持っています。私はリピーターを使用しています(実際には、私はItemTemplateを自動的に作成してリピーターを使用するためにDataListにバインドします)私のListプロパティを除いて。代わりにこのようなものを生成するSystem.Collections.Generic.List`1 [WebApplication2.Public.BLL.Users]

"User Privileges:Privi1、Privi2"のようなフレンドリーな方法で表示したい私のアプリケーションのレイヤーをきれいにし、構造化しておくために、私は同じテーブルのデータベースにそれらを保存せず、単にテキストとして保存してそれを追加します。

私は

PS)=事前にみんなのおかげで...シンプルで良い解決策を見つけることを願っています

:私はprivilege.privilegeName

答えて

2

、二つのアプローチがあり、一つはBugai13によって提案されたものです。特定のタイプのネストされたデータの場合は、これが問題ありません。

あなたの他の選択肢は、リピーターをリピーター内に置いて、それを適切にバインドすることです(O/Rマッパーの仕方に応じてメインデータオブジェクトに割り当てられたリストになる)。

カスタム表示プロパティのコードは、データモデルではなく、プレゼンテーションレイヤーのどこか(フレームワーク/デザインによって異なる)にすることができます。そのため、「悪い」ものではありません。それはあなたに最高です。何か「気分が良い」ものがあれば。

+0

私はList <>ではなく文字列としてプロパティを宣言したときに分割して結合する必要があります。これは、データベースに格納するかbdから取得するたびにリストに追加する必要があるためです。私はあまり経験はありませんが、私は良いアプリケーションアーキテクチャを賢明に構築したいと考えていました...別の意見がある場合は、それを共有してください とbtwどのように入れ子のリピータにprivilege.privilegeNameをバインドするのですか?または特権を読み込んでネストされたリピータにバインドする全く新しいメソッドを使用する必要がありますか? – lKashef

+0

@IKashef: 'List <...> Privs'プロパティを持つ' User'クラスを持つオブジェクトモデルがあると仮定しています。あなたのデータモデルはそういうものかもしれません。すなわち正解で形式的にツリーとして構成されている。それを見に来るときは、リピーター(あなたがわからない場合は、それを行う方法についてはGoogle、それは十分簡単です)リピーターを使用し、それを適切に表示することができます。あなたがまだいない場合は、データアクセス層/モデル用のO/Rマッパーを強くお勧めします。私は個人的にLLBLGenを使用します。 –

+0

情報ありがとうございました+1 ...入れ子のリピータを使用する方法についていくつかのアイデアがありますが、正確な例についてはGoogleにお伝えしますが、2番目のリピータのデータソースはどうなりますか? Privilegeクラスのメソッドを宣言して特権を取得する必要がありますか、それともプロパティにバインドできますか?このO/Rマッパーは何ですか?私はすでにそれについて研究していますが、私はそれについて1つのライナーの紹介を得ることを望みます! – lKashef

0

を表示したい、オブジェクト権限を表示したくありませんちょうどあなたの商務オブジェクトのプロパティを作成し、それをバインドします。それを表示するカスタムプロパティを持っている:リピータを使用する場合

public string PrivilegiesString 
{ 
    get 
    { 
    var sb = new StringBuilder("User Privileges : "); 
    foreach(var item in privileges) 
    { 
     sb.AppendFormat("{0}, ",item.privilegeName); 
    } 

    return sb.ToString(); 
    } 
} 
+0

あなたはそれが良いアプローチだと思いますか?つまり、Text.Join( "、"、(<#%Eval( "#%Eval" "権限")%> "のように、プレゼンテーションレイヤーでこれを処理する方が良いわけではありません。 ( "privileges.privilegName")%> '....このコードは完全にわかりませんが、私が何を言おうとしているのか理解してくれることを願っています! – lKashef

+0

このプロパティをBussinessレイヤに追加したくない –

+0

また、Evalはリフレクションを使用して名前でプロパティ値を取得するため、一部のロジックを「Eval」に入れることはできません。 –

関連する問題