7

問題は、タイトルのように、MVCモデルバインダーがビューモデルオブジェクトのプライベートコンストラクターを許可するかどうかです。どうやらそうではなく、MissingMethodException: No parameterless constructor defined for this object.たとえプライベートのパラメーターなしのコンストラクターがあったとしても。プライベートコンストラクターが許可されていない場合、アーキテクチャ上の回避策はありますか?

このようなコンストラクターは、モデルバインダーのみがフィールドが一貫して入力されない可能性のあるViewModelオブジェクトを作成できるようにするために役立つ場合があります。コードの他の部分で、一部のフィールドの入力を忘れる可能性はありません。

Entity Frameworkは、同様の状況で、プライベートコンストラクターとプライベートプロパティを使用できます。

4

2 に答える 2

16

いいえ、違います。

実際のコードがそのコンストラクターを呼び出さないようにする場合は[Obsolete("For model binding only", true)]、パブリックコンストラクターに追加できます。コンストラクターが明示的に呼び出された場合、これによりコンパイラーエラーが発生します。

于 2012-08-31T16:35:37.357 に答える
1

プライベート/保護された ctor をサポートするカスタム モデル バインダーをいつでも作成できます。

于 2012-08-31T16:37:38.693 に答える