我的模型属性之一具有以下 RangeAttribute 验证器:
[Range(1, 100, ErrorMessage = "Milestone must be between 1 and 100.")]
public int? MilestonePercentage1 { get; set; }
目前,验证器用于标记输入到文本框中的十进制值“.2”。它还将值标记为“0.2”......
但是,我将小数点左侧的数字设置为一或更大的那一刻:
“1.0”或“1.2”等......验证器认为这没问题,并没有标记它。
我在模型中指定 int,所以我不知道乳清“.2”或“0.9”被认为是无效的,而“1.2”被认为是有效的。
我已经使用 NUnit 为模型中的属性编写了一个测试,它运行正确(.GetAttributesOn 是我们编写的扩展方法):
private RangeAttribute rangeAttribute;
[SetUp]
public void Given()
{
rangeAttribute = new StudyRandomizationCap()
.GetAttributesOn(s => s.MilestonePercentage1)
.OfType<RangeAttribute>()
.Single();
}
[TestAttribute]
public void DoesNotAllowAValueThatContainsADecimal()
{
Assert.That(rangeAttribute.IsValid("3.2"), Is.False);
}
但是当我不得不依赖客户端验证器使用的javascript时,值“3.2”被认为是有效的。
我认为在使用客户端脚本(我相信是 jquery.validate.js?)时,这个验证器的翻译会丢失一些东西
有任何想法吗?