首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解ActionFilterAttribute检查是否为空

了解ActionFilterAttribute检查是否为空
EN

Stack Overflow用户
提问于 2014-07-24 15:21:17
回答 1查看 1.3K关注 0票数 3

我正在尝试理解这个ActionFilterAttribute。为了更好地理解它是如何工作的,我尝试了一下代码,但我完全迷惑了。

这是有效的ActionFilterAttribute。它应该检查空的请求体并返回一个错误:

代码语言:javascript
复制
public class CheckModelForNullAttribute : ActionFilterAttribute
{
    private readonly Func<Dictionary<string, object>, bool> _validate;

    public CheckModelForNullAttribute() : this(arguments => arguments.ContainsValue(null))
    { }

    public CheckModelForNullAttribute(Func<Dictionary<string, object>, bool> checkCondition)
    {
        _validate = checkCondition;
    }

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (_validate(actionContext.ActionArguments))
        {
            var modelState = new ModelStateDictionary();
            modelState.AddModelError("Parameter", "The request body cannot be null");
            actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, modelState);
        }
    }
}

为什么这不会产生相同的结果:

代码语言:javascript
复制
public class CheckModelForNullAttribute: ActionFilterAttribute
{
    private readonly Func<Dictionary<string, object>, bool> _validate = args => args.ContainsValue(null);

    public override void OnActionExecuting(HttpActionContext filterContext)
    {
        if (!_validate(filterContext.ActionArguments))
        {
            filterContext.ModelState.AddModelError("Parameter", "The request body cannot be null");
            filterContext.Response = filterContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, filterContext.ModelState);
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-07-25 14:50:16

我犯了一个愚蠢的错误:

代码语言:javascript
复制
if (_validate(actionContext.ActionArguments)) 

在第一节课上

代码语言:javascript
复制
if (!_validate(filterContext.ActionArguments)) 

在第二节课上。

解决方案,删除!它的工作原理是一样的。

谢谢你haim770的暗示!我想我是累了,看不见了

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24927416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档