表单中的数据验证存在问题。我在模型中声明了错误消息,但似乎它在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的数字时没有错误消息,如您所见:
我在这里缺少什么?谢谢你的帮助。
答案 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)
根据评论中的要求,我将其添加为答案:
的引用