繁体   English   中英

ASP.NET核心模型验证未按预期工作

[英]ASP.NET core model validation doesn't work as expected

根据Microsoft文档,如果模型属性不可为空,则默认情况下将其视为必需属性,因此无需显式添加[Required]属性。

默认情况下,验证系统将非空参数或属性视为具有[Required]属性的属性。 十进制和整数等值类型不可为空。 https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/validation?view=aspnetcore-2.2#required-attribute

但这实际上是不正确的。 假设我有以下模型:

public class Model
{
    [Required]
    public string Name { get; set; }
    public int Age { get; set; }
}

如果请求的正文中不包含Age ,则Age属性绑定为0,并且模型验证不会失败。 即使使用[Required] ,模型验证仍然不会失败,并且将0分配给Age 那么,如何真正使具有“非空”类型的属性成为“必需”呢?

三个选项恕我直言:

  • 验证自己Age不是default
  • 使用Range属性
  • 使其为必需且nullable
[Required]
public int? Age { get; set; }

是否需要nullable是一个很好的解决方案还是一个肮脏的解决方法,在很大程度上取决于您的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM