こんにちは、私のAsp.net MVcモデルをフォローしています
TestModel.cs
public class TestModel
{
public double OpeningAmount { get; set; }
[Required(ErrorMessage="Required")]
[Display(Name = "amount")]
[Range(0 , double.MaxValue, ErrorMessage = "The value must be greater than 0")]
public string amount { get; set; }
}
次に、コントローラーから「OpeningAmount」が割り当てられます。
最後に、フォームを送信するときに、「金額」が「OpeningAmonut」より大きくなければならないことを確認したいと思います。したがって、動的に範囲を設定したい
[Range(minimum = OpeningAmount , double.MaxValue, ErrorMessage = "The value must be greater than 0")]
クライアント側のみをチェックするため、JqueryまたはJavaScriptのみを使用したくないので、Range属性の最小値を動的に設定できます。
プロパティ間の依存関係を処理できる組み込み属性はありません。
したがって、属性を操作する場合は、カスタム属性を作成する必要があります。
Se ここ 必要なものの例。
dataannotationsextensions.org もご覧ください。
別の解決策は、(非常に素晴らしい) FluentValidation のような検証ライブラリを使用することです。
最近、まさにそれを実行する驚くべきナゲットがありました:動的な注釈と呼ばれます ExpressiveAnnotations
これにより、以前は不可能であったようなことができます。
[AssertThat("ReturnDate >= Today()")]
public DateTime? ReturnDate { get; set; }
あるいは
public bool GoAbroad { get; set; }
[RequiredIf("GoAbroad == true")]
public string PassportNumber { get; set; }