0

decimalテキスト ボックスの形式でユーザーに公開されるプロパティを含むかなり複雑な ViewModel があります。値のないテキストボックスをゼロとして解釈したい。(基になるドメイン オブジェクトのプロパティは null 非許容であり、既定値は 0 です。)

がビュー データを ViewModelにDefaultModelBinderバインドすると、入力の空白文字列を持つ 10 進プロパティはゼロに初期化されますが (.NET の標準)、DefaultModelBinder空白テキスト ボックスの ModelState にエラーが追加されます。その結果、ModelState が無効になり、ユーザーには「値が必要です」というメッセージが大量に表示されます。空白のままにしたテキストボックスのエラー。

これらのエラーが ModelState に追加されないようにするにはどうすればよいですか?

4

1 に答える 1

1

この状況でできる最善のことは、ViewModel を作成することです。ドメイン モデルに直接バインドする代わりに、ビューへのデータ転送のみを目的として作成された ViewModel にバインドします。ViewModel では、これらのフィールドを null 許容の 10 進数として作成できます。その後、好きなように ViewModel をドメイン モデルにマップし直すことができます。

これは本当に正しい動作です。TextBox に何も入力しない場合、それは 0 ではなく null と同等です。

于 2009-07-06T16:19:31.887 に答える