我正在使用.NET Web API2.2在C#中构建一个应用程序接口。我正在验证请求,并通过ModelState返回一个“错误”响应。
[ResponseType(typeof(IEnumerable<CustomerModel>))]
public IHttpActionResult Get([FromBody]List<CustomerSearchModel> row)
{
    if (ModelState.IsValid)
    {
        CustomerLookupModel model = new CustomerLookupModel(row);
        model.Init();
        model.Load();
        return Ok(model.Customers);
    }
    else
    {
        return BadRequest(ModelState);
    }
}这是一个“错误”响应示例。
{
    "message": "The request is invalid.",
    "modelState": {
        "row[0].Country": ["'Country' should not be empty."]
    }
}在'error‘响应中,我想将单词'modelState’更改为'error‘。我想我可以通过复制'ModelState‘对象并将其命名为’error‘来做到这一点……并将其包含在BadRequest中。
return BadRequest(error);这不管用。我一定漏掉了一些简单的东西。
发布于 2016-08-27 12:06:57
返回匿名对象:
 public HttpResponseMessage GetModelStateErrors()
    {
        //return Request.CreateResponse(HttpStatusCode.OK, new Product());
        ModelState.AddModelError("EmployeeId", "Employee Id is required.");
        ModelState.AddModelError("EmployeeId", "Employee Id should be integer");
        ModelState.AddModelError("Address", "Address is required");
        ModelState.AddModelError("Email", "Email is required");
        ModelState.AddModelError("Email", "Invalid Email provided.");
        var error = new {
            message = "The request is invalid.",
            error = ModelState.Values.SelectMany(e=> e.Errors.Select(er=>er.ErrorMessage))
        };
        return Request.CreateResponse(HttpStatusCode.BadRequest, error);
    }Fiddler输出:

https://stackoverflow.com/questions/39177299
复制相似问题