我有以下定义。
[StringLength(4, MinimumLength = 4, ErrorMessage = "Mobile Last 4 must be 4 digits.")]
public string MobileLast4 { get; set; }
我希望能够使用
null
或 如果字段确实有值,那么它的长度需要为 4 个字符。
我遇到的问题是,如果属性为空,则验证失败。我是否应该使用其他属性或者我需要自己推出?
我想我可以使用带有 range 属性的可为 null int 来解决这个问题,但我还有其他不接受数字的属性。
使用 [StringLength] 属性并不会使该字段成为必填字段。如果您的验证失败,这不是由您显示的代码引起的。
我正在玩 EFCore。 我发现 [StringLength] 确实强制不可为空。也许这与之前的版本有所不同,我不确定,我没有检查过。 但是,在文档中您会看到它允许最小长度为负数。
为了使其在我的情况下发挥作用,我必须做以下三件事:
添加一个负数作为最小长度。
使用AllowNull属性进行注释。
确保该属性具有可为空值(字符串?)
[StringLength(500,MinimumLength = -1)]
[AllowNull]
public string? Note { get; set; }
希望有帮助。