C# ASP.NET 5、MVC6、WebAPI->;ModelState.IsValid始终返回true

C# ASP.NET 5、MVC6、WebAPI->;ModelState.IsValid始终返回true,c#,asp.net,asp.net-web-api,asp.net-core,C#,Asp.net,Asp.net Web Api,Asp.net Core,我已经看到很多关于IsValid总是正确的帖子,但是没有一个能帮助我解决这个问题。我在使用MVC5的ASP.NET4中也看到了这个问题。很明显,我在某个地方错过了一步 控制器方法: public IHttpActionResult Post([FromBody]ValuesObject value) { if (ModelState.IsValid) { return Json(value); } else { return

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

控制器方法:

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;
}
职位正文:

{
  Age: 1
}
ModelState.IsValid为true

但我预计所需的验证和范围验证都会失败

我错过了什么

谢谢


Kevin

您不能在模型中使用字段。这是为了你的验证

在ASP.NET Web 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; }
}

谢谢你多看一双眼睛!