web-dev-qa-db-ja.com

ASP.NET MVCデータアノテーション属性別のプロパティ値から設定された範囲

こんにちは、私の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属性の最小値を動的に設定できます。

8
Dilip0165

プロパティ間の依存関係を処理できる組み込み属性はありません。

したがって、属性を操作する場合は、カスタム属性を作成する必要があります。

Se ここ 必要なものの例。

dataannotationsextensions.org もご覧ください。

別の解決策は、(非常に素晴らしい) FluentValidation のような検証ライブラリを使用することです。

1

最近、まさにそれを実行する驚くべきナゲットがありました:動的な注釈と呼ばれます ExpressiveAnnotations

これにより、以前は不可能であったようなことができます。

[AssertThat("ReturnDate >= Today()")]
public DateTime? ReturnDate { get; set; }

あるいは

public bool GoAbroad { get; set; }
[RequiredIf("GoAbroad == true")]
public string PassportNumber { get; set; }
9
Korayem