2009-03-31 8 views
4

通常、メンバーシップを許可するサイトでは、ログインしたときにのみ表示されるデータをユーザーに提供したいと考えています。MVCビュー|あなたはIsAuthenticatedシナリオをどのように扱いますか?

私のサイトでは、ログインしたユーザーがデータ所有者の場合データを管理するためのツールをいくつか提供したいと考えています。

私の質問はこれです。この義務を2つの異なる見解に分けていますか? 「通常の」ユーザー用に読み込まれる1つのビューと、「所有者」ユーザー用に読み込まれるビュー。通常のユーザーに表示されるビューは、単にデータを表示します。所有者はデータとそれを管理するいくつかのツールを見る。

または、単一のビューでチェックを行い、その中のブロックを非表示にするか(通常のASP.NETで行ったのと同様)

恐らく、2つのビューの間の義務を1つのビューから分割する技術的な理由はありますか?

答えて

5

私はまた、単一のビューオプションにも行くだろう。 何をすべきかを示すためにビューデータに特定のプロパティを提供します。

<% if (Model.IsOwner) { %> 
    //Html for owner 
<% } %> 
+0

それはまさに私の見解では、文字通り私がやっていることです。 IsOwnerはビューにも渡す正確なプロパティです。 :D – Chaddeus

1

私は個人的には単一の表示オプションを使用します。そうすれば、両方のビューに表示されるコードを繰り返す必要はありません。

技術的に(またはMVCパターンに関して)私はそれを分割する理由を考えることはできません。

+0

私はそれを分割すると思うだろう唯一の理由は、いずれかを削除することですロジックコードを表示するか、別のデザイナーに分割する必要があるかどうかを確認します。 – Chaddeus

0

ビュー内で条件付きロジックを避けるのが理想的です(理想的には理想的です)。ビューを複数に分割するのが理想的です。

ビュー間で重複が発生する場合は、その重複したコンテンツを共有部分に移動する可能性があります。

0

私は通常のレンダリングに先立っての役割のための部分的なチェックで条件ロジックで、部分的に余分なコンテンツをレンダリングするために行く:

<%-- Master Page --%> 
<% Html.RenderPartial("DataOwnerStuff"); %> 

<%-- Partial --%> 
<% if(Roles.IsUserInRole("DataOwner")) { %> 
    <h1>Hi Data Owner!</h1> 
<% } %> 
関連する問題