Так что мне очень помогли здесь создать этот метод и заставить его работать ... но, поскольку это кто-то другой, я подумал, что из этого возникнет другой вопрос.
Сначала у меня был помощник HTMLметод расширения работает путем передачи дополнительной строки, чтобы определить разрешение, которое я проверял в расширении.Теперь я хочу передать массив строк (разрешений) и просмотреть их в методе, но я получаю эту ошибку:
CS1501: нет перегрузки для метода 'CheckBoxForWithPermission', не принимает 4 аргумента
Вот вызов помощника:
<%= Html.CheckBoxForWithPermission(m => m.Current, new string[] { Chatham.Web.Business.Definitions.Constants.PERMISSIONS.hasICAdvanced }, Chatham.Web.Business.Definitions.Constants.PERMISSIONS.hasICAdvanced, new { @class = "economicTextBox", propertyName = "Current", onchange = "UseCurrent();UpdateField(this);" })%>
А вот фактический метод:
// CHECKBOX WITH PERMISSIONS
// WITHOUT -- READONLY
public static MvcHtmlString CheckBoxForWithPermission<TModel>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, bool>> expression,
string[] permissions,
object htmlAttributes
)
{
foreach (string permission in permissions)
{
if (Chatham.Web.UI.Extranet.SessionManager.PhysicalUser.IsInRole(permission))
{
// the user has the permission => render the checkbox
return htmlHelper.CheckBoxFor(expression, htmlAttributes);
}
}
// the user has no permission => render a readonly checkbox
var mergedHtmlAttributes = new RouteValueDictionary(htmlAttributes);
mergedHtmlAttributes["disabled"] = "disabled";
return htmlHelper.CheckBoxFor(expression, mergedHtmlAttributes);
}