Проверка ModelState запускается только для нескольких действий - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть два действия:

[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 как пустые.Не уверен, почему это срабатывает для одного, а не для другого?Любая идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...