我有一个包含当前用户属性的基本视图模型类,我需要 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);
}
}
}