我有一个看起来像这样的模型:
public class TimeAdjustData
{
[IntegerAllowPlus]
public int? AddStart { get; set; }
[IntegerAllowPlus]
public int? AddEnd { get; set; }
public TimeSpan? GivenStart { get; set; }
public TimeSpan? GivenEnd { get; set; }
}
我的目标是允许用户输入一个整数,他们可以在其中为正值添加一个加号。例如,他们应该能够填写 20、-20 或 +20。其中 20 和 +20 在逻辑上是相同的。
我创建了一个自定义验证属性,并在客户端上添加了一个自定义客户端验证规则。
jQuery.validator.addMethod("integerplus", function (value, element, param) {
if (value[0] === '+') { value = value.substr(1, value.length - 1); }
return isInteger(value);
});
jQuery.validator.unobtrusive.adapters.addBool("integerplus");
isInteger 是我自己的一个函数,它当然可以验证整数。
我的问题是,即使 MVC 正确呈现它的一个属性,data-val-integerplus
它也会呈现一个data-val-number
.
我猜这是因为 AddStart 和 AddEnd 的数据类型是可为空的整数。但这会导致即使输入值通过了我的自定义验证,它也不会通过内置数字客户端验证。所以不知何故我需要避免创建属性data-val-number
。我怎样才能做到这一点?