現在のユーザー プロパティを含む基本ビューモデル クラスがあり、ユーザーの管理ステータスに従ってテキスト ボックスまたはラベルをレンダリングするには 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);
}
}
}