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

如何消除@Html.ValidationMessageFor的「The value 'null' is invalid」错误提示

解决Kendo EnumDropDownList自定义Required验证信息不显示的问题

问题原因

你的DayOfWeek?是可空枚举类型,当选择下拉框的空选项时,Kendo组件会提交空字符串而非null。ASP.NET MVC在绑定空字符串到可空枚举时,会触发类型转换验证错误,该错误优先级高于[Required]注解的自定义错误,因此显示系统默认的「The value 'null' is invalid」提示。

解决方案

方案1:给模型字段添加DisplayFormat注解

在模型的DayOfWeek字段上添加[DisplayFormat(ConvertEmptyStringToNull = true)],让MVC自动将提交的空字符串转换为null,从而触发[Required]的自定义错误提示:

[Required(ErrorMessage = "Please enter Day")]
[DisplayFormat(ConvertEmptyStringToNull = true)]
public DayOfWeek? DayOfWeek { get; set; }

方案2:修改Kendo下拉框的空选项值

调整OptionLabel的设置,明确指定空选项的Value为""(空字符串),配合方案1的注解效果更稳定:

@(Html.KendoEnumDropDownListFor(x => x.DayOfWeek, 
    new { id = "DayOfWeekDropDown", @Name = "select-view", @Class = "select-view right" }, 
    true, false)
    .OptionLabel(new SelectListItem { Text = " ", Value = "" })
    .HtmlAttributes(new { @id = "DayOfWeekDropDown" }))

方案3:覆盖客户端验证的类型错误消息

如果客户端验证导致系统提示出现,可以通过jQuery Validate修改对应控件的错误消息。在视图底部添加以下脚本:

$(function() {
    var validator = $("#DayOfWeekDropDown").closest("form").data("validator");
    if (validator && validator.settings.rules.DayOfWeek?.enum) {
        validator.settings.messages.DayOfWeek.enum = "Please enter Day";
    }
});

验证效果

完成上述任一方案后,选择下拉框的空选项提交表单时,会正确显示你自定义的「Please enter Day」错误提示,而非系统默认的类型错误消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:17:07