ASP.NET MVC或者基于用户角色的渲染EditorFor

穆罕默德AVŞAR

我有一个包含当前用户属性的基本viewmodel类,并且我需要MVC来根据用户的管理员状态呈现文本框或标签。

目前,我正在这样做,但是代码必须重复很多次。

            @if (Model.CurrentUser.Admin)
            {
                @Html.EditorFor(m => m.Order.CustomerDiscount);
            }
            else
            {
                @Html.DisplayFor(m => m.Order.CustomerDiscount);
            }

是否可以创建自定义编辑器扩展?

            @Html.PrivilegedEditorFor(m=>m.Order.CustomerDiscount);

编辑:

感谢@Fals。一个稍微不同的解决方案在这里:

using System.Web.Mvc.Html;
public static class HtmlHelperExtensions
{
    public static MvcHtmlString PrivilegedEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, bool isAdmin)
    {
        if (isAdmin)
        {
            return htmlHelper.EditorFor(expression);
        } else {
            return htmlHelper.DisplayFor(expression);
        }
    }

}

例如,您可以HTML Helper为此创建一个自定义

1)将new添加Class到您的项目中,其中将包含帮助程序。只需确保使用的模型包含即可CurrentUser.Admin

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Helpers;
using System.Web.Mvc.Html;
using System.Linq.Expressions;

namespace MyAppName.Helpers
{
    public static class HtmlPrivilegedHelper
    {
        public static MvcHtmlString PrivilegedEditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
        {
            // You can access the Model passed to the strongly typed view this way
            if (html.ViewData.Model.CurrentUser.Admin)
            {
                return html.EditorFor(expression);
            }

            return html.DisplayFor(expression);
        }
    }
}

2)命名空间添加到Web.config了在Views文件夹中,那么你不必包括命名空间,你想用的时候:

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization"/>
    <add namespace="System.Web.Routing" />
    <add namespace="MyAppName.Helpers" /> //Here the helper reference
  </namespaces>
</pages>
</system.web.webPages.razor>

希望这对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET(MVC)用户,角色和角色中的用户

来自分类Dev

ASP.NET(MVC)用户,角色和角色中的用户

来自分类Dev

基于用户角色的ASP.NET MVC 5 Identity 2登录重定向

来自分类Dev

基于ASP.NET MVC中角色的自定义用户授权

来自分类Dev

ASP.NET MVC 5基于用户角色自定义Bootstrap导航栏

来自分类Dev

MiniProfiler ASP.NET Core-基于用户角色的ShouldProfile

来自分类Dev

ASP.NET MVC授权具有多个角色的用户

来自分类Dev

具有MVC Asp.net身份角色的用户列表

来自分类Dev

ASP.Net MVC 5检查用户角色的_Layout

来自分类Dev

角色/用户的ASP.NET MVC黑名单

来自分类Dev

ASP.net MVC + ASP.net身份播种角色和用户

来自分类Dev

ASP.NET身份“基于角色”的声明

来自分类Dev

基于角色的令牌ASP.net身份

来自分类Dev

asp.net中基于角色的授权

来自分类Dev

基于角色的令牌ASP.net身份

来自分类Dev

ASP.NET 2.2用户角色的问题

来自分类Dev

在ASP .NET MVC中更改角色权限

来自分类Dev

基于用户角色的ASP.NET WebAPI条件序列化

来自分类Dev

HighCharts图表ASP.NET MVC渲染

来自分类Dev

ASP.NET MVC 4中具有ASPNET身份的基于角色的身份验证

来自分类Dev

基于ASP.NET MVC 5中角色的单个页面授权

来自分类Dev

具有Azure AD的Asp.net核心基于MVC角色的授权

来自分类Dev

ASP.NET MVC / SQL Server中基于角色的实用数据访问控件

来自分类Dev

基于ASP.NET MVC 5中角色的单个页面授权

来自分类Dev

使用ASP.net Identity禁用基于角色的授权的MVC视图中的输入字段

来自分类Dev

ASP.NET MVC - 基于微软活动目录服务角色显示/隐藏网页链接

来自分类Dev

ASP.Net MVC添加动态EditorFor元素

来自分类Dev

检查用户是否在asp.net mvc Identity中扮演角色

来自分类Dev

如何添加简单的用户角色-ASP.NET MVC C#

Related 相关文章

  1. 1

    ASP.NET(MVC)用户,角色和角色中的用户

  2. 2

    ASP.NET(MVC)用户,角色和角色中的用户

  3. 3

    基于用户角色的ASP.NET MVC 5 Identity 2登录重定向

  4. 4

    基于ASP.NET MVC中角色的自定义用户授权

  5. 5

    ASP.NET MVC 5基于用户角色自定义Bootstrap导航栏

  6. 6

    MiniProfiler ASP.NET Core-基于用户角色的ShouldProfile

  7. 7

    ASP.NET MVC授权具有多个角色的用户

  8. 8

    具有MVC Asp.net身份角色的用户列表

  9. 9

    ASP.Net MVC 5检查用户角色的_Layout

  10. 10

    角色/用户的ASP.NET MVC黑名单

  11. 11

    ASP.net MVC + ASP.net身份播种角色和用户

  12. 12

    ASP.NET身份“基于角色”的声明

  13. 13

    基于角色的令牌ASP.net身份

  14. 14

    asp.net中基于角色的授权

  15. 15

    基于角色的令牌ASP.net身份

  16. 16

    ASP.NET 2.2用户角色的问题

  17. 17

    在ASP .NET MVC中更改角色权限

  18. 18

    基于用户角色的ASP.NET WebAPI条件序列化

  19. 19

    HighCharts图表ASP.NET MVC渲染

  20. 20

    ASP.NET MVC 4中具有ASPNET身份的基于角色的身份验证

  21. 21

    基于ASP.NET MVC 5中角色的单个页面授权

  22. 22

    具有Azure AD的Asp.net核心基于MVC角色的授权

  23. 23

    ASP.NET MVC / SQL Server中基于角色的实用数据访问控件

  24. 24

    基于ASP.NET MVC 5中角色的单个页面授权

  25. 25

    使用ASP.net Identity禁用基于角色的授权的MVC视图中的输入字段

  26. 26

    ASP.NET MVC - 基于微软活动目录服务角色显示/隐藏网页链接

  27. 27

    ASP.Net MVC添加动态EditorFor元素

  28. 28

    检查用户是否在asp.net mvc Identity中扮演角色

  29. 29

    如何添加简单的用户角色-ASP.NET MVC C#

热门标签

归档