ユーザーがリードの見積もりのリストを編集する必要があります。見積もりは次のようなさまざまなタイプにすることができます。
- 製品タイプ A の見積もり
- 製品タイプ B の見積もり
すべての見積もりタイプは、QuoteBase などの共通の基本クラスを共有します。
私の見積もりはフロントエンドに正しく表示されており、正しいデータもポストバックされているようです。
ただし、サーバーでは、使用するサブクラスが明らかにわからないため、基本クラスを使用するだけです。
コレクション内のオブジェクトのタイプを含むModelTypeなどの非表示フィールドをチェックするには、WebApi用のカスタムモデルバインダーが必要だと思います。モデルバインダーは、このタイプの新しいオブジェクトを作成し、投稿されたプロパティをバインドしますこのオブジェクトへの値。
ただし、この時点で、これを行う方法に関するドキュメントやブログはほとんどありません。
WebApi のソース コードをチェックして、デフォルトのモデル バインダーを拡張できるかどうかを確認しましたが、デフォルトはすべてシール クラスです。
IModelBinder は見た目だけで実装できます。ModelType という値を探すことで正しいモデル タイプを作成できますが、デフォルトがあった場合、サブクラスの残りの値をどのように入力すればよいかわかりません。 i から継承していたモデル バインダーは、基本クラスの bind メソッドを呼び出すだけです。