2012-04-11 7 views
0

私のmasterpageの管理者固有のボタンを管理者のないユーザから隠そうとしています。私のMasterpageから私のHomeControllerのメソッドを呼び出す

<% if (Request.IsAuthenticated) 
    {%> 
     <%: Html.ActionLink("Administrer", "Index", "User", new { Area = "Users" }, new { @class = "menubutton", @id = "settingsbutton" })%> 
     <%} else { }%> 

は今、私は、現在のユーザーが管理者である場合にはIF()文でチェックをしたい:

私のコードは、これまでのところ、このようになります。私はASP.NETメンバーシップシステムを使用し、彼が管理者であるかどうかに関する情報(bool)を含むいくつかのexstra情報とともに各ユーザーにspecielクラスを添付します。

私の質問はどうやってこれをチェックするか、それと似たような方法を呼び出すのですか?

+0

if(Request.IsAuthenticated && "管理者のためのチェックメソッド") – AronChan

+0

私はちょうどそのようなメソッドをmasterpageからコントローラに呼び出す方法を知らないのです – AronChan

+1

http:// stackoverflowを参照してください。 com/questions/409213 /私たちが作ったhow-can-i-create-a-view-that-has-different-displays-the-the-role-the-usやhttp://stackoverflow.com/questions/4610749/ asp-net-mvc-check-role-inside-view –

答えて

3
<% if (Request.IsAuthenticated && User.IsInRole("Administrator")) 
    {%> 
     <%: Html.ActionLink("Administrer", "Index", "User", new { Area = "Users" }, new { @class = "menubutton", @id = "settingsbutton" })%> 
     <%} else { }%> 

あなたがその役割にユーザーをリンクするためにASP.NETメンバシッププロバイダとASP.NETロールプロバイダを使用している場合、あなたは自分のビューのIPrincipal Userオブジェクト上IsInRole(string)メソッドを呼び出すことができます。

+0

それは私がIPrincipalユーザーオブジェクトを持っていないようだ。私はそれをどうやって得るのですか? – AronChan

+0

HttpContext.Current.User.IsInRole( "administrator") これはあなたの例と同じくらい良いのでしょうか、それともそのような理由がありますか? – AronChan

+0

'HttpContext.Current.User.IsInRole(" administrator ")'は問題ありません。おそらくMVC3またはRazorビューエンジンのみで、デフォルトでビューページに@ユーザーを提供します。 – danludwig

関連する問題