无法在asp.net操作筛选器中获取自定义属性

时间:2019-05-18 19:30:31

标签: asp.net-core

我已经创建了一个自定义属性,并且我试图在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 个答案:

答案 0 :(得分:1)

如果您想自己做,则要实现的目标要稍微复杂一点(即,从grep方法中反映出属性值)。 在您的示例中,我建议使用来自ASP.NET Core的内置属性过滤器(ASP.NET Core documentation中的更多信息):

nm2 <- unlist(pt_data[1, grep("^keyword", names(pt_data))])
i1 <- grep("^hits", names(pt_data))
names(pt_data)[i1] <- nm2
i2 <- grep("^(geo|time|keyword|group)", names(pt_data))
pt_data[i2] <- NULL

并像这样注释您的控制器动作:

Controller