Один из способов сделать это - передать имя параметра маршрута в атрибут и изучить данные маршрута в самом атрибуте.Например:
[SecureMethod(PermissionRequired = AccessPermissionEnum.DeleteUsers, UserIdsKey = "userIds")]
Тогда что-то вроде:
public AccessPermissionEnum PermissionRequired { get; set; }
public string UserIdsKey { get; set; }
public override void OnActionExecuting(ActionExecutingContext context)
{
// Depending on how you pass your userIds to the action, you
// may need to use something else from context to get the data,
// but it's all available in there.
var userIds = context.ActionArguments[UserIdsKey];
// Do something with the ids.
base.OnActionExecuting(context);
}
Хотя это работает и в некоторых местах работает очень хорошо, вы должны знать, что фильтр теперь обладает глубокими знаниями опередаваемый параметр. По большей части, это обычно не имеет большого значения, но этот подход не следует использовать повсеместно, поскольку в конечном итоге он будет добавлять много связей, если не будет использоваться должным образом.Это полезный инструмент для использования время от времени.