ASP.NET MVC4代码优先 - 数据验证不起作用

时间:2013-03-28 12:34:34

标签: c# asp.net-mvc entity-framework razor asp.net-mvc-4

表单中的数据验证存在问题。我在模型中声明了错误消息,但似乎它在View中没有任何影响。我有以下型号:

public class Dog
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Display(Name = "Id")]
    public int Id { get; set; }

    [Display(Name = "Name")]
    [StringLength(20)]
    public string Name { get; set; }

    [Display(Name = "Value")]
    [Range(1, int.MaxValue, ErrorMessage="Minimum value is 1")]
    public int Value { get; set; }
}

在视图中我有这个:

<div class="editor-field">
@Html.EditorFor(model => model.Value)
@Html.ValidationMessageFor(model => model.Value)
</div>

问题是当用户选择输入低于1的数字时没有错误消息,如您所见:

enter image description here

我在这里缺少什么?谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

根据无标签,没有参考或jQuery验证的任何提及来判断,我们可以安全地看到您正在尝试验证良好的老式方式(开箱即用)。 / p>

您必须通过调用ModelState.IsValid在帖子方法中自己调用验证。如果失败,错误消息将显示在错误的字段上。你有这样的事情:

[HttpPost]
public ActionResult Edit (Dog model)
{
    if (ModelState.IsValid)
    {
        //He's a good dog, save him, then redirect elsewhere
    }
    else
    {
        //He's a bad dog, return the same view and the errors are shown
        return View(model);
    }
}

答案 1 :(得分:1)

根据评论中的要求,我将其添加为答案:

添加对jQuery Validation plugin

的引用