如何在asp.net中的动作filter中添加参数?

我有以下filter属性,我可以将字符串数组传递给属性,如[MyAttribute("string1", "string2")]

 public class MyAttribute : TypeFilterAttribute { private readonly string[] _ids; public MyAttribute(params string[] ids) : base(typeof(MyAttributeImpl)) { _ids = ids; } private class MyAttributeImpl : IActionFilter { private readonly ILogger _logger; public MyAttributeImpl(ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger(); } public void OnActionExecuting(ActionExecutingContext context) { // HOW DO I ACCESS THE IDs VARIABLE HERE ??? } public void OnActionExecuted(ActionExecutedContext context) { } } } 

如何将字符串数组_ids传递给动作filter的实现? 我错过了一些非常明显的东西!?

TypedFilterAttribute有一个Argument属性(类型为object[] ),您可以在其中将参数传递给实现的构造函数。 因此,应用于您的示例,您可以使用此代码:

 public class MyAttribute : TypeFilterAttribute { public MyAttribute(params string[] ids) : base(typeof(MyAttributeImpl)) { Arguments = new object[] { ids }; } private class MyAttributeImpl : IActionFilter { private readonly string[] _ids; private readonly ILogger _logger; public MyAttributeImpl(ILoggerFactory loggerFactory, string[] ids) { _ids = ids; _logger = loggerFactory.CreateLogger(); } public void OnActionExecuting(ActionExecutingContext context) { // NOW YOU CAN ACCESS _ids foreach (var id in _ids) { } } public void OnActionExecuted(ActionExecutedContext context) { } } }