使用DropDownListFor丢失验证消息

时间:2016-11-24 07:31:42

标签: c# asp.net-mvc validation

我正在使用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" })

我不知道我在哪里弄错了..

2 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您正在为模型上的另一个属性生成下拉列表。即您正在为id创建下拉列表,而验证邮件是MappingType。为了使其工作,控制(在您的情况下为下拉列表)和验证消息应该是相同的属性。所以改变以下行

@Html.DropDownListFor(m => m.id, new SelectList(ViewBag.mappingTypes, "Value", "Text"), "Choose")

@Html.DropDownListFor(m => m.MappingType, new SelectList(ViewBag.mappingTypes, "Value", "Text"), "Choose")

答案 1 :(得分:-1)

您可以使用viewdata绑定下拉列表。

@Html.DropDownListFor(m => m.id,(SelectList)ViewData["mappingTypes"],"Choose")

@ Html.ValidationMessageFor(model => model.MappingType,"",new {@class =" text-danger"})