ASP.NET 5,MVC6,WebAPI - > ModelState.IsValid始终返回true

时间:2016-01-04 03:26:08

标签: c# asp.net asp.net-web-api asp.net-core

我看过很多关于IsValid的帖子总是如实,但没有一个能帮助我解决这个问题。我也在使用MVC5的ASP.NET 4中看到了这个问题。很明显,我在某个地方错过了一步。

控制器方法:

public IHttpActionResult Post([FromBody]ValuesObject value)
{
    if (ModelState.IsValid)
    {
        return Json(value);
    }
    else
    {
        return Json(ModelState);
    }
}

ValuesObject类:

public class ValuesObject
{
    [Required]
    public string Name;

    [Range(10, 100, ErrorMessage = "This isn't right")]
    public int Age;
}

POST的正文:

{
  Age: 1
}

ModelState.IsValid为true。

但我希望Required和Range验证都失败。

我错过了什么?

谢谢,

凯文

1 个答案:

答案 0 :(得分:13)

您无法在模型中使用字段。你的验证是one of general conditions

  

在ASP.NET Web API中,您可以使用来自的API   System.ComponentModel.DataAnnotations命名空间用于设置验证   模型上属性的规则。

将其替换为属性,一切正常:

public class ValuesObject
{
    [Required]
    public string Name { get; set; }

    [Range(10, 100, ErrorMessage = "This isn't right")]
    public int Age { get; set; }
}