将int作为字符串处理的范围
本文关键字:处理 范围 字符串 int | 更新日期: 2023-09-27 18:05:55
我有一个用c#制作的项目,MVC4 EF(数据优先)。
在我的Create视图中,我有许多数字字段,我想使用Range来指定允许的值。由于一些奇怪的原因,我的数字被当作字符串处理,这使验证变得混乱。
让我们以"LengthInch"字段为例:在数据库中它是int
在我的视图中我有代码:
@Html.EditorFor(model => model.LengthInch)
@Html.ValidationMessageFor(model => model.LengthInch)
,最后在我的元数据文件(模型)我有代码:
[Range(0, 11, ErrorMessage = "Value for {0} must be between {1} and {2}.")]
public Nullable<int> LengthInch { get; set; }
如果我在字段中输入0,1,10或11,一切都很好,但如果我例如输入2,我会得到一个验证错误,说"长度必须在0和11之间的值"。3到9也一样。因此,由于某种原因,这些数字似乎被视为字符串。有人知道吗?
Malcolm的"新"项目的观点为我指明了正确的方向,谢谢!似乎jquery。Validate人员做了一个bug fix push来解决这个问题。
// convert the value to a number for number inputs, and for text for backwards compability
// allows type="date" and others to be compared as strings
if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
value = Number(value);
}
if ( value ) {
rules[method] = value;
} else if ( type === method && type !== 'range' ) {
// exception: the jquery validate 'range' method
// does not test for the html5 'range' type
rules[method] = true;
}
当我为jqueryvalidation-1.11.1做了一个nuget更新后,它修复了这个问题,欢迎来到JS包地狱!