0

我真的被困在这里很长时间了,我不知道为什么它不起作用。我关注了这篇文章,它解释了如何在 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");
}
4

2 回答 2

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" />     
}
于 2013-10-11T16:33:03.673 回答
0

在花了很长时间进行这种愚蠢的验证之后,我才知道我只需要更改 layout.cshtml 中脚本的顺序。感谢这篇文章。该死的MVC!!!

于 2013-10-12T11:29:14.077 回答