私はASP MVC 3プロジェクトで次のクラス階層を持っています。いくつかのエントリはコンテナを持つことができ、そのコンテナは内部にいくつかのコンテンツを持つことができます。コンテナクラスとコンテンツクラスは抽象クラスです。ASP MVC 3 ajax with json model with complex classへのバインド
私は、ブラウザからJSONリクエストを受信し、エントリークラスの一種であるモデルにバインドする必要があります。問題は、DefaultModelBinderクラスがどのタイプのコンクリートコンテナであるべきかを知らなかったため、Entryモデルクラスを正しく作成できなかったことです。たとえば:
var dataaa = { Name: 'Some Name', Containers: [{ ContainerId: 0}] };
$.ajax({
url: 'Add',
type: "POST",
data: JSON.stringify(dataaa),
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert('hello');
});
+
[HttpPost]
public string Add(Entry entry)
{
return "foo";
}
次のリクエストは、サーバー例外につながる: は抽象クラスを作成することはできません。
{ Name: 'Some Name', Containers: [{ Type: 'FullContainer', ContainerId: 0}] };
方法FullContainerクラスに「FullContainer」に設定Typeフィールドを持ったオブジェクトをマッピングするためのメカニズムを結合モデルを指示する:私は、例えば、要求をJSONにTypeフィールドを追加することができますか?