当我们检查web api中的modelstate时,如何返回另一个类型而不是ModelStateDictionary?

时间:2017-06-21 16:55:49

标签: c# validation asp.net-web-api modelstate

我们有一个名为Modelstate的东西,它返回一个ModelStateDictionary 我发现我们可以在我们的模型属性上放置一些属性并检查ModelState.IsValid和如果需要某些东西并且为null 当我们返回模型状态时它显示错误,我想要的是想要使用该属性并检查ModelState.IsValid 但我想返回我的返回类型格式

我对api的输入是:

public class Input
{
    [Required]
    public string Name { get; set; }
    [Required]
    [Range(500, 50000)]
    public int AccountBalance{ get; set; }
}

我的api输出如下:

public  class Output
{
    public string ErrorDetail { get; set; }
    public int ErrorCode { get; set; }
}

在我的控制器中我想检查验证

       if (!ModelState.IsValid)
        {

     //based on which property has problem I want to decide about the return 
      //error code
        return new Output
                {
                    Description = "error about name",
                    ErrorCode = "1020"
                }

            }

有没有办法以干净的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

只需使用Content<T>的{​​{1}}方法:

ApiController

协商内容并返回提供的HTTP状态代码。

请注意,if (!ModelState.IsValid) { return Content(HttpStatusCode.BadRequest, new Output { ErrorDetail = "error about name", ErrorCode = "1020" }); } 是在请求无效时使用的常见HTTP错误状态代码(例如,验证失败)。