MVC4 FoolProof 数据注释 - 如何检查该字段不等于零?

MVC4 FoolProof Data Annotations - How to check that field does not equal to zero?

我正在尝试使用 MVC Foolproof 库来验证我的模型并分别显示错误消息。但是,当我使用 Foolproof 验证时,在单击提交按钮时,即使是常规验证也没有显示。

我的要求是我有一个数字文本框,它不能为空,否则 zero.The 文本框值是根据从上一个下拉列表中选择的值计算的。

下面是带有数据注释的模型中两个字段的代码,

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)

捆绑配置class

 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/plugins/jQueryVal/jquery.unobtrusive*",
                    "~/plugins/jQueryVal/jquery.validate*",
                    "~/plugins/jQueryVal/mvcfoolproof.unobtrusive*"));

万无一失的 [NotEqualTo] 属性将 属性 的值与另一个 属性 的值进行比较。在您的情况下,这会引发异常,因为您的模型不(并且不能)包含名为 0.

的 属性

如果只允许正值,那么您可以使用 [Range] 属性

[Range(1, int.MaxValue, ErrorMessage = "Duration must be greater than zero")]
public Nullable<int> Duration { get; set; }

或者,如果允许负值,您可以在视图模型中包含一个 属性(例如)int InvalidDuration 并使用

[NotEqualTo("InvalidDuration", ErrorMessage="Duration cannot be zero")]
public Nullable<int> Duration { get; set; }

并在视图中包含一个隐藏的输入

@Html.HiddenFor(m => m.InvalidDuration)