我真的被困在这里很长一段时间,我不知道为什么它不起作用。我按照这个post解释了如何在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");
}
答案 0 :(得分:0)
代码打击可能会满足您的期望
public ActionResult validation()
{
var validation = new ValidationModel();
validation.options = new List<SelectListItem>()
{
new SelectListItem() {Text = "-- Select one --", Value = "" },
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)
@Html.ValidationMessageFor(m => m.optionselected)
<input type="submit" value="OK" />
}
答案 1 :(得分:0)
在这个愚蠢的验证花了很长时间后,我知道我只需要在layout.cshtml中更改脚本的顺序。感谢post。血腥的MVC !!!