我是MVC的新手。我在我的成分表中为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; }
“请选择”,根据需要,在视图中显示为默认值,但我希望用户必须在保存之前进行选择。我在视图中使用EnumDropDownListFor
,如下所示。
@Html.EnumDropDownListFor(model => model.UnitOfMeasure,
"--Please select--",
new { @class = "form-control" })
两个问题。首先,当用户没有做出选择时,错误消息没有出现,其次,我根本无法保存任何选择(显然没有选择符合范围标准)。我做错了什么?
答案 0 :(得分:2)
如果表单未提交,但未显示错误消息,则表示您未包含该消息的占位符。你需要包括
@Html.ValidationMessageFor(m => m.UnitOfMeasure)
jquery.validate.unobtrusive.js
插件解析由data-val-*
方法生成的html中的EnumDropDownListFor()
属性,并将规则添加到jquery.validate.js
,包括传递充当消息的占位符。在你的情况下,没有,所以没有任何东西可以显示,但表格无效,不提交。
请注意,您[Range]
属性是不必要的,因为[Required]
属性已经意味着您必须选择其中一个enum
值。你可以简单地使用
[Required(ErrorMessage = "Please make a selection")]
public UnitOfMeasure? UnitOfMeasure { get; set; }