0

我的模型属性之一具有以下 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?)时,这个验证器的翻译会丢失一些东西

有任何想法吗?

4

1 回答 1

1

尝试这个:

[Range(typeof(int), 1, 100, ErrorMessage = "Milestone must be between 1 and 100.")]
public int? MilestonePercentage1 { get; set; }
于 2013-04-19T21:08:06.987 回答