現在、プロパティを持つ ViewModel がありますdouble Maximum
。ビュー側では、目立たない検証を支援するために隠し入力に保持されます。
値をポストバッキングすると、バインディングはサイレントに失敗します。この行にブレークポイントを配置する必要がありました。
if(ModelState.IsValid)
ModelState
どのプロパティにエラーがあったかを確認します。次に、このdouble Maximum
プロパティに次のメッセージが表示されたエラーがあることがわかりました。
型 'System.String' から型 'System.Double' へのパラメーターの変換に失敗しました。詳細については、内部例外を参照してください。
ビュー側HTML
でFirebugを調べていると、非表示の入力に次の値があることがわかります。
1.79769313486232E+308
これはdouble.MAX定数を正しく表しています。
2005 年 1 月(ほぼ 9 年前)の Scott Hanselman の投稿で、似たような内容を扱っているのを見つけました。
アプリの設定に何か問題がありますか、それともこの直接変換はサポートされていませんかstring
? エラーなしで処理する必要があるとdouble
思います。
注: Firebug を使用して非表示の入力値を変更しようとしましたが、Scott が投稿で言及しているように変更しました: 最後の桁から 1 を減算しました...
1.79769313486231E+308
今回はモデルバインダーが正しく処理されていることを確認するためだけに、再度ポストバックを実行しました。