我正在尝试使用 MVC Foolproof 库来验证我的模型并分别显示错误消息。但是,当我使用万无一失的验证时,单击提交按钮时,即使常规验证也不会显示。
我的要求是我有一个数字文本框,它不应该为空或零。文本框值是根据从前面的下拉列表中选择的值计算的。
以下是带有数据注释的模型中两个字段的代码,
using Foolproof;
[Required(ErrorMessage = "Fee is not given", AllowEmptyStrings = false)]
[NotEqualTo("0",ErrorMessage="Duration cannot be zero")]
public Nullable<int> Duration { get; set; }
HTML文本框
@Html.TextBoxFor(m => m.MultiCourse.Duration,
new { @class = "form-control", @placeholder = "Course Duration", @id = "txtCourseDuration" })
@Html.ValidationMessageFor(m => m.MultiCourse.Duration)
捆绑配置类
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/plugins/jQueryVal/jquery.unobtrusive*",
"~/plugins/jQueryVal/jquery.validate*",
"~/plugins/jQueryVal/mvcfoolproof.unobtrusive*"));
万无一失的[NotEqualTo]
attribute 将属性的值与另一个属性的值进行比较。在您的情况下,这会引发异常,因为您的模型不(并且不能)包含名为的属性0
.
如果只允许正值,那么您可以使用[Range]
属性
[Range(1, int.MaxValue, ErrorMessage = "Duration must be greater than zero")]
public Nullable<int> Duration { get; set; }
或者,如果允许负值,您可以在视图模型中包含一个属性(例如)int InvalidDuration
and use
[NotEqualTo("InvalidDuration", ErrorMessage="Duration cannot be zero")]
public Nullable<int> Duration { get; set; }
并在视图中包含隐藏输入
@Html.HiddenFor(m => m.InvalidDuration)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)