繁体   English   中英

MVC非侵入式验证未正确触发

[英]MVC Unobtrusive Validation Incorrectly Firing

对于我们的一个应用程序,我们将数据注释与jQuery.validate.unobtrusive插件结合使用,并且遇到了一个独特的,看起来像是个错误的今天。

查看模型属性

[Required(ErrorMessage = "You must specifiy a point value for the contest entry")]
[Min(5, ErrorMessage = "The point value must be at least 5 points for this contest")]
[DisplayName("Points required for entry:")]
public int RequiredPoints { get; set; }

视图

<li class="reqpoints">@Html.LabelFor(x => x.RequiredPoints) @Html.TextBoxFor(x => x.RequiredPoints)</li>

产生的HTML

<li class="reqpoints">

    <label for="RequiredPoints"></label>
    <input id="RequiredPoints" class="input-validation-error" type="text" value="10" name="RequiredPoints" data-val-required="You must specifiy a point value for the contest entry" data-val-range-min="5" data-val-range="The point value must be at least 5 points for this contest" data-val-number="The field Points required for entry: must be a number." data-val="true"></input>

</li>

如果在文本框中输入的数字是5-9或第一位数字是5或更大,则此方法非常有用。 从10到49、100-499、1000-4999等中的任何数字都将被拒绝,并显示错误消息,提示它必须至少为5分,几乎就像它在截断最后一位数字一样。 这不会发送到服务器再返回,而是触发了jQuery验证部分。 有没有人看到使用Min()的单个整数值的问题?

我应该注意,我们在最小值为100且没有任何大于100的数字(我知道)的地方被拒绝使用。

相关版本:

  • jQuery-1.8.4
  • jQuery.Validation-1.12.0
  • jQuery.validation.unobtrusive-3.1.2

更新

如果我将Min属性更改为Min 10,则一切都会按预期工作。 此外,如果我使用Range(5,99999)数据属性,那么所有值似乎也都可以正常工作。 看来jQuery 1.8.4和最新版本的验证插件的结合可能会出现一位数最小验证问题。

这是我们已经支持了几年的项目,我不得不刷新一些关于该项目的知识。

Min()属性实际上是DataAnnotationExtensions包的一部分,该包添加了一些其他数据注释,并使用jQuery验证框架进行了插入。 将这个软件包与jQuery验证框架一起安装(都是最新的),我可以在一个全新的项目中复制此问题。

我将向软件包作者报告此问题,但如果使用此软件包的其他任何人遇到此问题,则将其保留在此处。 解决方法是使用Range()数据批注。

更新

这里报告了问题 -但是,似乎这个项目在一段时间内没有正式更新。 我可能会检查我们如何使用该项目,并用.NET官方位替换其组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM