У меня есть два действия:
[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
}
*Атрибут 1010 * применяется на уровне контроллера, который содержит эти действия.
Теперь, когда я бегу, GetStuffs
выдает исключение ModelState
ниже, а ValidateStuffs
- нет.
"UserId": "The valid is required"
Не уверен, что здесь происходит.Оба действия проходят через фильтр проверки, однако один метод не имеет ошибки ValidationState
, а другой - нет.Оба прохода UserId
как пустые.Не уверен, почему это срабатывает для одного, а не для другого?Любая идея?