我真的被困在这里很长时间了,我不知道为什么它不起作用。我关注了这篇文章,它解释了如何在 MVC 中实现验证。但不为我工作。
我的问题是我能够在下拉列表中显示列表,但是当我处于应该显示错误消息的默认选项时,它没有显示任何错误消息。
我的代码如下所示:
模型类:
public class ValidationModel
{
public IEnumerable<SelectListItem> options { get; set; }
[Required(ErrorMessage = "Please select atleast one mode")]
public int optionselected { get; set; }
}
控制器 :
public ActionResult validation()
{
var validation = new ValidationModel();
validation.options = new List<SelectListItem>()
{
new SelectListItem() {Text = "Add or Update Customer", Value = "1" },
new SelectListItem() { Text = "Update Customer Credit", Value = "2"}
};
return View(validation);
看法 :
@using (Html.BeginForm("Validation", "home",FormMethod.Post))
{
@Html.DropDownListFor( m => m.optionselected, Model.options, "Select List")
@Html.ValidationMessageFor(m => m.optionselected)
<input type="submit" value="OK" />
}
默认情况下,选择列表选项将显示在我的下拉列表中。但是在这里我希望显示我的错误消息。但它没有显示。当用户选择值 1 或 2 时,不应显示此错误消息。
我也尝试在我的控制器中使用 Modelstate 但不工作:
[HttpPost]
public ActionResult Validation()
{
var validation = new ValidationModel();
validation.options = new List<SelectListItem>()
{
new SelectListItem() {Text = "Add or Update", Value="1"},
new SelectListItem() {Text = "Update Customer", Value="2"}
};
if (!ModelState.IsValid)
{
return View(model);
}
return RedirectToAction("bill");
}