允许属性为空或指定长度

问题描述 投票:0回答:2

我有以下定义。

[StringLength(4, MinimumLength = 4, ErrorMessage = "Mobile Last 4 must be 4 digits.")]
public string MobileLast4 { get; set; }

我希望能够使用

null
如果字段确实有值,那么它的长度需要为 4 个字符。

我遇到的问题是,如果属性为空,则验证失败。我是否应该使用其他属性或者我需要自己推出?

我想我可以使用带有 range 属性的可为 null int 来解决这个问题,但我还有其他不接受数字的属性。

c# data-annotations asp.net-web-api2
2个回答
4
投票

使用 [StringLength] 属性并不会使该字段成为必填字段。如果您的验证失败,这不是由您显示的代码引起的。


1
投票

我正在玩 EFCore。 我发现 [StringLength] 确实强制不可为空。也许这与之前的版本有所不同,我不确定,我没有检查过。 但是,在文档中您会看到它允许最小长度为负数。

为了使其在我的情况下发挥作用,我必须做以下三件事:

  1. 添加一个负数作为最小长度。

  2. 使用AllowNull属性进行注释。

  3. 确保该属性具有可为空值(字符串?)

        [StringLength(500,MinimumLength = -1)]
        [AllowNull]
        public string? Note { get; set; }
    

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.