You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.Net Web API如何让标注MinLength属性的请求字段支持空字符串输入

内置的[MinLength]特性默认会将空字符串判定为不符合最小长度要求,没有内置的开关可以豁免空字符串的校验,不需要完全移除[MinLength]特性自行实现全量校验,有两种更简便的实现方式:

方案1:使用[RegularExpression]正则校验特性直接覆盖规则

单字段临时使用时,你可以直接替换掉[MinLength(9)],用正则同时支持空字符串和9-18位长度的校验,写法如下:

[RegularExpression(@"^$|^.{9,18}$", ErrorMessage = "字段长度需为9-18位,或留空")]
[MaxLength(18)]
public string Id { get; set; }

这种方式不需要额外编写自定义类,适配快。

方案2:自定义继承自MinLengthAttribute的校验特性

如果你有多个字段都需要类似「空字符串豁免最小长度校验」的规则,可以自定义一个可复用的特性,代码实现如下:

public class MinLengthAllowEmptyAttribute : MinLengthAttribute
{
    public MinLengthAllowEmptyAttribute(int length) : base(length) { }

    public override bool IsValid(object value)
    {
        // 空字符串直接跳过最小长度校验
        if (value is string input && input == string.Empty)
        {
            return true;
        }
        // 非空值走原生MinLength校验逻辑
        return base.IsValid(value);
    }
}

之后替换原有字段的[MinLength]特性即可:

[MinLengthAllowEmpty(9)]
[MaxLength(18)]
public string Id { get; set; }

内容的提问来源于stack exchange,提问作者Sperick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:57:02