我有两个动作:
[HttpGet]
[ResponseType(typeof(GetStuffResponse))]
public IHttpActionResult GetStuff([FromUri] RequestObj1 request){}
[HttpPost]
[ResponseType(typeof(ValidateStuffResponse))]
public IHttpActionResult ValidateStuff(RequestObj2 request){}
我的请求对象是:
public class RequestObj1{
public int UserId {get;set;}
//Other properties
}
public class RequestObj2{
public int UserId {get;set;}
//Other properties
}
我对两个操作都应用了验证过滤器:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class ValidateModelAttribute : ActionFilterAttribute
{
#region Public Methods
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
#endregion
}
[ValidateModel]
属性应用于包含这些操作的控制器级别。
现在,当我跑步时,GetStuffs
会引发以下ModelState
异常,而ValidateStuffs
不会。
"UserId": "The valid is required"
不确定这里发生了什么。这两个操作均通过验证过滤器,但是一种方法没有ValidationState
错误,而另一种则没有。两次传递的UserId
为空。不确定为什么会触发一个而不触发另一个吗?
任何想法?