所以我在这里有很多帮助来创建这个方法并让它工作......但由于这是不同的人,我想我会从中提出另一个问题。
首先,我有一个HTML Helper扩展方法,通过传入一个额外的字符串来确定我在扩展中检查过的权限。我现在想要传入一个字符串数组(权限),并在方法中循环它们,但我收到此错误:
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);
}
答案 0 :(得分:1)
这个看起来像问题:
new string[] {
Chatham.Web.Business.Definitions.Constants.PERMISSIONS.hasICAdvanced
},
Chatham.Web.Business.Definitions.Constants.PERMISSIONS.hasICAdvanced
我认为应该是:
new string[] {
Chatham.Web.Business.Definitions.Constants.PERMISSIONS.hasICAdvanced,
Chatham.Web.Business.Definitions.Constants.PERMISSIONS.hasICAdvanced
}
您当前的代码尝试传入一个拥有一个权限的数组,然后传递另一个单个字符串...而大概是意味着传入一个具有这两种权限的数组。
话虽如此,这两个权限都是一样的......看起来也是无意的。您尝试使用哪些权限?
(出于兴趣,为了便于阅读 - 你不能添加一个using指令让你只是引用PERMISSIONS.hasICAdvanced
吗?)