3

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

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 的数字时没有错误消息,如您在此处看到的:

在此处输入图像描述

我在这里想念什么?感谢您的帮助。

4

2 回答 2

3

从没有标签、没有引用或任何提及 jQuery 验证的情况来看,我们可以安全地看到您正在尝试验证良好的老式方式(开箱即用方式)。

您必须在您的 post 方法中自己调用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);
    }
}
于 2013-03-28T12:38:21.483 回答
1

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

添加对jQuery Validation 插件的引用

于 2013-03-28T20:02:19.457 回答