这是我的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?

最佳答案

通常应为400-BadRequest

NotAcceptable是服务器无法满足Accept标头的情况。

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



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

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

关于asp.net-mvc-3 - 在ApiController中检查ModelState,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10708649/

10-08 21:51