相关疑难解决方法(0)

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

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

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

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

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

            @Html.PrivilegedEditorFor(m=>m.Order.CustomerDiscount);
Run Code Online (Sandbox Code Playgroud)

编辑:

感谢@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);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

9
推荐指数
1
解决办法
2430
查看次数

标签 统计

asp.net-mvc ×1

c# ×1