枚举列表的验证消息

Validation Message for enum list

我在视图模型中有一个枚举 属性,如下所示:

        [Display(Name = "Claim Type")]
        [Required(ErrorMessage = "Please select a claim type")]
        public ClaimType ClaimType { get; set; }

ClaimType 枚举由值 1、2、3 和 4 组成。 在视图中,我有如下字段。注意自定义默认元素:

  <select asp-for="ClaimType" class="form-control" asp-items="Html.GetEnumSelectList<ClaimType>()">
    <option value="">Select Claim Type</option>
  </select>
  <span asp-validation-for="ClaimType" class="text-danger"></span>

当我将该字段留空并尝试提交时,验证错误消息显示: 值“”无效。 未到达 ViewModel 中的自定义错误消息,因为它似乎首先验证该值是否为有效的枚举值。 知道如何显示自定义错误消息吗?

不确定 Required 是否对 non-nullable 值类型有意义,因此您可以尝试在模型中使用可为空的 ClaimType,例如

[Display(Name = "Claim Type")]
[Required(ErrorMessage = "Please select a claim type")] 
public ClaimType? ClaimType { get; set; }