【发布时间】:2016-11-24 17:41:01
【问题描述】:
我正在使用 mvc 开发一个 c# 项目。我有一个创建表单,其中有一个下拉列表。下拉字段是必填字段(在我的模型中)。但是当我没有从下拉列表中选择一个值并单击“创建”按钮时,我没有验证消息(即使我的模型类中有一个)。这是我的模型:
[Required(ErrorMessage = "This field is required.")]
public int MappingType { get; set; }
这是我的看法:
@Html.DropDownListFor(m => m.id, new SelectList(ViewBag.mappingTypes, "Value", "Text"), "Choose")
@Html.ValidationMessageFor(model => model.MappingType, "", new { @class = "text-danger" })
我不知道我在哪里犯了错误..
【问题讨论】:
-
您显示的属性名为
MappingType,但您生成的下拉列表是针对名为id的属性! (当它已经是SelectList时,为什么要从ViewBag.mappingTypes创建一个新的SelectList? -
你的意思是我应该在我的模型中添加“id”属性并使其成为必需,然后像这样更改视图:@Html.DropDownListFor(m => m.id, new SelectList (ViewBag.mappingTypes, "Value", "Text"), "Изберете") @Html.ValidationMessageFor(model => model.id, "", new { @class= "text-danger" })
-
或
@Html.DropDownListFor(m => m.MappingType, (IEnumerable<SelectListItem>)ViewBag.mappingTypes, "Choose"),因为这似乎是您想要绑定的内容。 -
非常感谢,我刚刚尝试了您的建议 (@Html.DropDownListFor(m => m.MappingType, ....)) 并出现了验证消息!
标签: c# asp.net-mvc validation