0

の実行中に更新順序を制御する方法はありますTryUpdateModelか? 他のプロパティを更新するには、1 つのプロパティを有効にする必要がありますが、既定では、もう 1 つのプロパティが更新されているとき、2 番目のプロパティは null のままです。

デフォルトの更新順序は何ですか? 奇妙なことは、私のコードで必要なプロパティがモデルとフォームの両方で最初に宣言されていることです。インターネットでこの実行順序に関する情報を見つけることができません。

4

2 に答える 2

2

TryUpdateModel の実行中に更新順序を制御する方法はありますか?

いいえ、注文を保証することはできません。注文を当てにするべきではありません。これが、モデルが完全にバインドされ、ビュー モデル セッター内ではなく、検証を実行する必要がある理由です。

データ注釈属性を使用することもできますが、(特に条件付きおよびより複雑な検証シナリオに関して) それらがどれほど制限されているかを理解したら、ASP.NET MVC と非常にうまく統合されているFluentValidation.NETに切り替えることができます。これを強くお勧めします。

于 2012-05-10T13:45:49.070 に答える
0

私の知る限りでは、バインダーはクラスに入力される順序でプロパティを取得します。最後に、GetProperties を実行するのを見ました。それがメソッドのロード方法です。

ただし、これは非公開の実装であるため、当てにしないでください。この種の制約がある場合は、独自の ModelBinder を作成してください。

于 2012-05-10T13:46:39.223 に答える