我在我的一个模型属性上有以下RangeAttribute验证器:
[Range(1, 100, ErrorMessage = "Milestone must be between 1 and 100.")]
public int? MilestonePercentage1 { get; set; }
目前,验证器用于标记输入到文本框中的十进制值“.2”。它还标记值“0.2”......
但是,我将小数点左边的数字设置为1或更大:
“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?)时,我认为这个验证器的翻译丢失了。
有什么想法吗?
答案 0 :(得分:1)
试试这个:
[Range(typeof(int), 1, 100, ErrorMessage = "Milestone must be between 1 and 100.")]
public int? MilestonePercentage1 { get; set; }