Невозможно получить пользовательские атрибуты в фильтре действий asp.net - PullRequest
0 голосов
/ 18 мая 2019

Я создал настраиваемый атрибут и пытаюсь получить значение этого настраиваемого атрибута в фильтре действий asp.net, но он кажется недоступным.Что я делаю не так?

 [AttributeUsage(AttributeTargets.Method, Inherited = true)]
 public sealed class MyCustomAttribute : Attribute
 {
   MyCustomAttribute(string param)
   {
   }
 }

 public class MyCustomActionFilter : IActionFilter
 {
   public void OnActionExecuted(ActionExecutedContext context)
   {
    throw new NotImplementedException();
    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
     // unable to find my custom attribute here under context.Filters or anywhere else.
     }
  }   

  [HttpGet]
  [MyCustomAttribute ("test123")]
  public async Task<Details> GetDetails(
  {
  }

1 Ответ

1 голос
/ 18 мая 2019

То, чего вы хотите достичь, немного сложнее, если вы хотите сделать это самостоятельно (то есть, отражая значение атрибута из метода Controller). Я бы порекомендовал использовать встроенные фильтры атрибутов из ASP.NET Core (подробнее в Документация ASP.NET Core ), в вашем примере:

public class MyCustomActionAttribute : ActionFilterAttribute
{
    private readonly string param;

    public MyCustomActionAttribute(string param)
    {
        this.param = param;
    }

    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var paramValue = param;
        base.OnActionExecuting(context);
    }
}

и комментируя действие вашего контроллера следующим образом:

[HttpGet]
[MyCustomAction("test123")]
public async Task<Details> GetDetails()
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...