3

私の_Layout.cshtml中には、ユーザーの役割が次の場合にボタンを表示しない次のコードがありますUserType1

     @if (!(HttpContext.Current.User.IsInRole("UserType1")))
     { 
       <li><a href="../St/Index">Static</a> </li>
       <li><a href="../St/Clients">Clients</a> </li>
     }

これを行うためのより良い方法またはベストプラクティスの方法があるかどうか疑問に思いました。_Layout.cshtmlこのコードをファイルに入れていることに注意してください。

4

1 に答える 1

3

これは問題ないようです。一部の人々(私のような)は、条件を単体テストできるようにするために、これをさらに一歩進めて、このチェックをカスタムHTMLヘルパーでラップすることを好むかもしれません。

@if (Html.ShouldShowButtons())
{ 
    <li><a href="../St/Index">Static</a> </li>
    <li><a href="../St/Clients">Clients</a> </li>
}

およびヘルパーの実装:

public static class HtmlExtensions
{
    public static bool ShouldShowButtons(this HtmlHelper html)
    {
        return html.ViewContext.HttpContext.User.IsInRole("UserType1");
    }
}

別の方法として、子アクションを使用してより複雑なロジックを実装できます。

@{Html.RenderAction("MenuButtons", "Menu");}

次に、ユーザーが必要な役割を果たしているかどうかをチェックし、マークアップを使用して部分ビューをレンダリングする、対応するコントローラーアクションがあります。

于 2013-01-14T22:40:31.960 に答える