В ASP.NET MVC 2 для защиты действия контроллера я создал класс RequirePermission
, унаследованный от класса ActionFilterAttribute
. Действие контроллера выглядит как
[RequirePermission(permissions="CanView")]
public ActionResult List()
{
...
}
У меня есть перечисление с именем Permissions
public enum Permissions { CanDoEdit, CanView, CanInsert }
Класс RequirePermission
выглядит как
public class RequirePermission : ActionFilterAttribute
{
public string permissions;
string[] param = { "," };
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string[] requirePermissions = permissions.Split(param, StringSplitOptions.RemoveEmptyEntries);
if (requirePermissions.Contains(Permissions.CanDoEdit.ToString()))
{
//Check permission
}
if (requirePermissions.Contains(Permissions.CanView.ToString()))
{
//Check permission
}
if (requirePermissions.Contains(Permissions.CanInsert.ToString()))
{
//Check permission
}
}
}
Теперь вместо создания разных атрибутов я хочу использовать атрибут RequirePermission
, например:
[RequirePermission(permissions=Permissions.CanView+","+Permissions.CanEdit)]
так что я могу использовать его для разных пейзажей. но компилятор выдает следующую ошибку.
Аргументом атрибута должно быть константное выражение, выражение typeof или выражение создания массива типа параметра атрибута