枚举保存失败,不显示错误信息

Enum save failing, error message not displayed

我是 MVC 的新手。我在我的 Ingredient table 中为 UnitOfMeasure 定义了一个枚举,如下所示:

public enum UnitOfMeasure
{
    oz=1,
    lb=2,
    ml=3,
    liter=4,
    gal=5
}

我定义了相应的字段如下:

[Required]
[Range(1, int.MaxValue, ErrorMessage = "Please make a selection")]
public UnitOfMeasure? UnitOfMeasure { get; set; }

"Please select",根据需要,在视图中显示为默认值,但我希望用户必须在保存之前进行选择。我在视图中使用 EnumDropDownListFor,如下所示。

 @Html.EnumDropDownListFor(model => model.UnitOfMeasure,
                              "--Please select--", 
                              new { @class = "form-control" }) 

两个问题。首先,当用户没有进行选择时,不会出现错误消息,其次,我根本无法保存任何选择(显然没有选择符合范围标准)。我做错了什么?

如果表单未提交,但未显示错误消息,则表示您没有包含消息的占位符。您需要包括

@Html.ValidationMessageFor(m => m.UnitOfMeasure)

jquery.validate.unobtrusive.js插件解析你的EnumDropDownListFor()方法生成的html中的data-val-*属性,并将规则添加到jquery.validate.js,包括通过充当消息占位符的元素。你的情况是none,所以什么都显示不了,但是表单无效,没有提交。

请注意,您的 [Range] 属性是不必要的,因为 [Required] 属性已经意味着您必须 select enum 值之一。您可以简单地使用

[Required(ErrorMessage = "Please make a selection")]
public UnitOfMeasure? UnitOfMeasure { get; set; }