Jquery MVC不引人注目的验证
我们将数据注释与jQuery.validate.unobtrusive插件结合使用,用于我们的一个应用程序,今天遇到了一个独特的错误 视图模型属性Jquery MVC不引人注目的验证,jquery,asp.net-mvc,unobtrusive-validation,Jquery,Asp.net Mvc,Unobtrusive Validation,我们将数据注释与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")] [Displa
[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; }
看法
@Html.LabelFor(x=>x.RequiredPoints)@Html.TextBoxFor(x=>x.RequiredPoints)
结果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
属性更改为最小值为10,则一切正常。此外,如果我使用Range(599999)
data属性,那么所有的值似乎也都能正常工作。看来jQuery 1.8.4和最新版本的验证插件的组合可能会出现一位数最小验证的问题。这是一个我们已经支持了几年的项目,我不得不更新一些关于该项目的知识
Min()。安装这个包和jQuery验证框架(都是最新的)我可以在一个全新的项目上复制这个问题
我将向软件包作者报告这个问题,但如果其他使用这个软件包的人遇到这个问题,我将把这个问题留在这里。解决方法是使用Range()
数据注释
更新
-但是,该项目似乎在一段时间内没有正式更新。我可以检查一下我们如何使用这个项目,并用官方的.NET位替换它的组件。最后你是说任何少于100的数字都会被拒绝吗?阅读能力差sorry@AdmiralAdama-不,这意味着它按照应该/预期的方式工作。如果用户输入99,则被拒绝。如果他们输入101,它可以很好地用于另一个视图模型中的特定字段(与此模型无关)。在我遇到问题的例子中,它拒绝任何不是以5或更高开始的内容。我提到上一个例子只是为了说明它在我们的应用程序中的其他地方也能工作,只是这一个例子不行?对不起,我误读了上一个例子。你试过换号码吗?听起来jquery没有正确地转换为整数@拉达玛上将-不用担心!既然这个问题已经解决了,我将创建一个具有相同文件版本的新项目,看看是否可以复制其他包是否导致了问题。谢谢。这看起来真的很奇怪,但这可能是您的低调验证版本中的一个bug。
<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>