以前はサーバーからクライアントにラウンドトリップし、うまく戻ったオブジェクトがあります(つまり、フォームの編集と表示は正常に機能しました)。ただし、そのオブジェクトに複合型を追加し、それを処理するためのカスタムModelBinderを作成しました。複合型は単一の文字列として表すことができますが、オブジェクトには10進数として格納されます(「0ft。3in。」は0.25として格納できると考えてください)。
ただし、私の問題は、検証が失敗した場合です。ユーザーが「asdf」と入力すると、検証は失敗します。ただし、Decimalに格納されるのは0だけです。したがって、ビューがレンダリングされてユーザーに送信されると、「asdf」ではなく「0」とエラーメッセージが表示されます。デフォルトのModelBinderではこの問題は発生しません(他のフィールドは無効な文字列を問題なくラウンドトリップします)。したがって、カスタムModelBinderに何かが欠けている必要があります...しかし、それは何ですか?
電話してみました
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, New ValueProviderResult(null, attemptedValue, Globalization.CultureInfo.CurrentCulture))
しかし、それは何にも影響を与えていないようです。