抽象クラスから派生するさまざまな具象型をインスタンス化するカスタム MVC モデル バインダーを含むクラス ライブラリがあります。モデル バインダーは、この投稿で説明されているものとほぼ同じです。
テスト用の MVC Web アプリケーションも含まれている同じ Visual Studio ソリューション内から使用すると、問題なく動作します。
私の問題は、アセンブリから nuget パッケージを作成し、それをまったく別の MVC アプリケーションに含めると、Global.asax.cs で正しく構成したにもかかわらず、モデル バインダーが機能しなくなることです。
CreateModel()
髪を引っ張った後、別の MVC アプリでモデル バインダーを直接再作成しました。そうしているうちに、バインダーでオーバーライドされたメソッドが保護されていることに気付きました。実行されるようになり、保護されたキーワードが関係していると思われますが、その理由を正確に説明してください。
「ローカル」モデルバインダーを使用しても、さらに問題があります。実行して具体的なオブジェクトをインスタンス化しようとすると、例外が発生Could not load type XXXX from assembly { separate MVC project assembly name}
するため、モデル バインダーが独自のアセンブリの外部から型を読み込めないようです。
なぜこれが起こるのか、そしてそれを回避するために私ができることについて、誰かが私にもっと情報を与えることができますか? モデル バインダーとモデルは、MVC アセンブリではなくクラス ライブラリに存在する必要があることに注意してください。