如何修改ASP.NET Core中字符串长度验证的提示信息
提问内容
我需要对表单中的字符串输入字段进行验证。由于该字段为必填项,ASP.NET Core已自动校验其是否为空。
(截图说明:展示ASP.NET Core默认的必填项空值验证提示界面)
我已在模型上添加了最大长度和最小长度属性,希望在输入不合法时修改对应的验证提示信息。
(截图说明:展示模型类中添加长度验证属性的代码片段)
解决方案
方法一:直接在数据注解中指定自定义错误信息
在模型的验证属性中,通过ErrorMessage参数直接设置自定义提示文本,覆盖默认信息:
示例代码(用[StringLength]统一指定长度范围)
public class YourFormModel { [Required(ErrorMessage = "请填写此字段")] [StringLength(50, MinimumLength = 3, ErrorMessage = "输入内容长度必须在3-50个字符之间")] public string TargetField { get; set; } }
示例代码(拆分[MinLength]和[MaxLength]分别定义提示)
如果需要给最小、最大长度设置不同提示,可拆分属性:
[Required(ErrorMessage = "此字段不能为空")] [MinLength(3, ErrorMessage = "输入内容不能少于3个字符")] [MaxLength(50, ErrorMessage = "输入内容不能超过50个字符")] public string TargetField { get; set; }
方法二:用资源文件统一管理提示(适配多语言场景)
如果需要统一维护所有验证提示或支持多语言,可通过资源文件实现:
在项目中添加资源文件(如
ValidationResources.resx),添加对应键值对:RequiredTip: 请填写此字段MinLengthTip: 输入内容不能少于3个字符MaxLengthTip: 输入内容不能超过50个字符
在模型属性中指定资源类型和对应键:
[Required(ErrorMessageResourceType = typeof(ValidationResources), ErrorMessageResourceName = "RequiredTip")] [MinLength(3, ErrorMessageResourceType = typeof(ValidationResources), ErrorMessageResourceName = "MinLengthTip")] [MaxLength(50, ErrorMessageResourceType = typeof(ValidationResources), ErrorMessageResourceName = "MaxLengthTip")] public string TargetField { get; set; }
注意:确保客户端验证同步生效
如果项目启用客户端验证(默认开启),只需确保视图引入验证脚本,自定义提示会自动同步到前端:
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
内容的提问来源于stack exchange,提问作者FadoBagi
相关产品推荐
相关产品推荐

