Вы можете написать собственный помощник:
public static MvcHtmlString MyCheckBoxFor<TModel>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, bool>> expression,
string permission,
object htmlAttributes
)
{
if (permission == "foo bar")
{
// the user has the foo bar permission => render the checkbox
return htmlHelper.CheckBoxFor(expression, htmlAttributes);
}
// the user has no permission => render empty string
return MvcHtmlString.Empty;
}
, а затем:
<%= Html.CheckBoxFor(
m => m.Current,
"some permission string",
new {
@class = "economicTextBox",
propertyName = "Current",
onchange = "UseCurrent();UpdateField(this);"
})
%>
ОБНОВЛЕНИЕ:
Вот как вы можете изменить помощник HTMLтак что он отображает флажок только для чтения вместо пустой строки, если у пользователя нет прав доступа:
public static MvcHtmlString MyCheckBoxFor<TModel>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, bool>> expression,
string permission,
object htmlAttributes
)
{
if (permission == "foo bar")
{
// the user has the foo bar permission => render the checkbox
return htmlHelper.CheckBoxFor(expression, htmlAttributes);
}
// the user has no permission => render a readonly checkbox
var mergedHtmlAttributes = new RouteValueDictionary(htmlAttributes);
mergedHtmlAttributes["readonly"] = "readonly";
return htmlHelper.CheckBoxFor(expression, mergedHtmlAttributes);
}