2011-12-16 5 views
0

たとえば、管理者だけが詳細ビューでCustomerIDを表示および編集できるようにしたいとします。モデレータはこの値を見ることができますが、編集可能ではなく、通常のユーザーは見ることもできません。これは可能ですか?ASP.NET - 特定のロールを持つユーザーだけが一部のフィールドを編集可能なものとして参照するDetailsViewを作成できますか?

+0

はい。さあ、googleに行って、より具体的な問題があるときに戻ってきてください。 – ChrisBint

+0

確かに何でもできますが、今どのように役割を扱っていますか?あなたが現在のユーザーの役割に応じてコントロールを隠すか、表示するか、またはバインドすることができます。 –

+0

私はこれをしばらく前にGoogle検索を実行しました。従来のデータソースを使用する代わりにカスタムバインディングを実行していたので、すべての検索結果から複数の結果を得て答えを得なければならなかった。 – gsirianni

答えて

0

ユーザーの役割に基づいてビューの切り替えを処理するには、Webユーザーコントロールまたはマルチビューをお勧めします。

1

ここに行きます。私は多くのGoogle検索を試みたが、誰もそれをはっきり説明できなかった。 PreRenderイベントでこれを実行する必要があります。このコードスニペットでは、.netのメンバーシッププロバイダを使用して、ユーザーが役割にいるかどうかを確認しないでください。独自のカスタムテーブルがある場合は、ユーザーがカスタムロールのいずれかにいるかどうかを確認するカスタム関数を作成する必要があります。また、このソリューションではBoundFieldsではないItemTemplatesを使用しないでください。

protected void detailsView_OnPreRender(object sender, EventArgs e) 
    { 
     if (dvPackage.CurrentMode == DetailsViewMode.Edit) 
     { 
      //disables/enables a the dropdown for Process Status if the user has the RLIST role 
      TextBox txtCustomID = (TextBox)Utilities.FindControlRecursive(dvPackage, "txtCustomID "); 
      txtCustomID.Visible = false; 
      if (User.IsInRole("Admin")) 
      { 
       txtCustomID.Visible = true; 

     } 
    } 

ここでfindコントロールの再帰関数があります。無料です。

+0

小さな最適化:txtCustomIDのデフォルトをvisible = falseにします。ユーザーが管理者である場合は、再帰検索を実行するだけです。 –

関連する問題