检查ApiController中的ModelState

时间:2012-05-22 19:20:03

标签: asp.net-mvc-3 asp.net-ajax asp.net-mvc-4 asp.net-web-api

以下是ApiController中的POST操作。

public HttpResponseMessage Post(ViewModel model)
    {
        if (!ModelState.IsValid)
        {
            var ResponseMessage = new HttpResponseMessage(HttpStatusCode.XXXXXX
            return ResponseMessage; 
        }

        if (!_service.Create(model))
        {
            var ResponseMessage=new HttpResponseMessage(HttpStatusCode.NotAcceptable);
            return ResponseMessage;
        }
        else
        {
            return new HttpResponseMessage(HttpStatusCode.Created);
        }
    }

以这种方式启用服务器端模型验证是否可以?并且,我很确定如果一切正常,应该返回Created。但是如果ModelState无效,或者发生了一些错误,我应该返回什么样的HttpStatusCode?

1 个答案:

答案 0 :(得分:2)

通常它应该是400 - BadRequest

NotAcceptable是服务器无法满足Accept标头的时候。

PreConditionFailed是缓存验证条件失败的时候。例如,当且仅当ETag与请求中的值匹配时,如果PUT请求需要更新。


或者您可以发送自定义错误。由于它与Request有关,因此您需要使用4xx数字:

return new HttpResponseMessage((HttpStatusCode) 499) 
     {
          ReasonPhrase = "Validation failed"
     };