【问题标题】:ASP.NET 5, MVC6, WebAPI -> ModelState.IsValid always returns trueASP.NET 5、MVC6、WebAPI -> ModelState.IsValid 始终返回 true
【发布时间】:2016-04-07 15:51:47
【问题描述】:

我看到很多关于 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 为真。

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

我错过了什么??

谢谢,

凯文

【问题讨论】:

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


    【解决方案1】:

    您不能在模型中使用字段。这是one of general conditions 供您验证。

    在 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; }
    }
    

    【讨论】:

    • 感谢您的额外一双眼睛!
    猜你喜欢
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多