モデルのプロパティの 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 だと思いますか?)
何か案は?