2016-10-17 11 views
0

最近、私は表示/非表示、ログインしているユーザーの役割と割り当てられた権限に基づいてコントロールを有効/無効にしました。大量のネットを閲覧すると、カスタムHTMLヘルパーと最新のタグヘルパーを作成することができます。.netコアで無効にするコントロールを有効にする

私の質問は、表示/非表示、TagHelpersを使用してコントロールを有効/無効にすることができますか?または、私はhtmlヘルパーだけを書く必要がありますか?今、伝統的な方法

@if (!permissions.CheckPermission("course.coursedetails.mytextbox.visible")) 
{ 
    <section class="col col-5"> 
    <label class="label">@objLocalizer["Title"]</label> 

    <label class="input"> 
    <i class="icon-append fa fa-tag"></i> 
    @Html.TextBoxFor(model => model.CourseLang.CourseTitle, permissions.CheckPermission ("course.coursedetails.mytextbox.enabled") ? (object)new { @disabled = "disabled", @class = "form-control", @id = "mytextbox" } : new { @class = "form-control", @id = "mytextbox" }) 

    <span asp-validation-for="CourseLang.CourseTitle" class="text-danger"></span> 
    </label> 
    </section> 

} 

を使用して、次のように私はそれを実装している

私は しかし、このロジックはselect, labelのようなコントロールのすべてのタイプには適用されない、@Html.TextBoxForに必要なパーミッションをチェックして見ることができるように

タグヘルパー/ htmlヘルパーを使用してこのことを達成するにはどうすればよいですか?

+0

タグヘルパーを使用します。 http://stackoverflow.com/a/34868369/5426333 –

+0

@caglinを参照してください。これはHtml.TextBoxFor、Html.DropdownlistForにも当てはまりますか? – Rohit

+0

私が知る限り、あなたはできません。 htmlヘルパーのためには、別の解決策を見つける必要があります(私はhtmlヘルパーのために同じものを実装する方法を知らない)。 –

答えて

1

組み込みの認証パーツを使用する場合は、IAuthorizationServiceを使用してこれを行うことができます。

まず、permissions.CheckPermissions()を置き換えて、asp.netコアに組み込まれたclaims based authorizationに戻ってください。簡単なクレームチェック以上のものが必要な場合は、code policies and requirementsを使用してルールを表現し、最後にそれらのポリシーをチェックして、inside your viewsをチェックして、チェックを使用してレンダリングを停止するコントロールをラップします。

コントローラのコードでチェックを複製する必要があることを忘れないでください。そうしないと、ブラウザの開発者ツールを使用して、最初にレンダリングしたものに関係なく、コントロールを元に戻すことができます。

関連する問題