【问题标题】:ASP.NET Web API - ActionFilter Property not being setASP.NET Web API - 未设置 ActionFilter 属性
【发布时间】:2014-09-09 17:01:05
【问题描述】:

我有一个从ApiController 扩展的基本控制器类并指定了这个抽象方法:

[HttpPost]
[ValidateModelFilter(Argument = "dto")]
public abstract Task<IHttpActionResult> Post(PostDTO dto);

这个方法会被所有的子类实现,但是过滤器会在他们没有意识到的情况下被隐式应用。

这种方法效果很好,我的过滤器被执行了。但是我的Argument 属性没有设置为"dto"

这是我的ValidateModelFilter 班级:

public class ValidateModelFilter : ActionFilterAttribute, IActionFilter, IFilter
{
    public string Argument { get; set; }

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
         //Some validation here...
    }
}

除了我的Argument 属性始终为null 之外,一切正常,无论我应用这样的过滤器:[ValidateModelFilter] 还是这个[ValidateModelFilter(Argument = "dto")]

另外请注意,我目前正在使用OWIN 管道和Ninject 进行依赖注入。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 rest asp.net-web-api


    【解决方案1】:

    对于未来的读者,我设法解决了这个问题。

    我在我的应用程序配置中注册我的过滤器:

    public static void Register(HttpConfiguration configuration)
    {
        configuration.Filters.Add(new ValidateModelFilter());
    }
    

    这使其成为“全局”,并且始终执行,无论您是否有该过滤器注释。

    我评论了那行,现在我的过滤器工作正常。

    //configuation.Filters.Add(new ValidateModelFilter());
    

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 2013-06-23
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 2010-11-13
      相关资源
      最近更新 更多