我看过很多关于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验证都失败。
我错过了什么?
谢谢,
凯文
答案 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; }
}