0

モデルのプロパティの 1 つに次の RangeAttribute バリデーターがあります。

[Range(1, 100, ErrorMessage = "Milestone must be between 1 and 100.")]
public int? MilestonePercentage1 { get; set; }

現在、バリデーターは、テキストボックスに入力されている 10 進数値「.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 だと思いますか?)

何か案は?

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 に答える