2012-05-07 73 views
0

我在ASP MVC 3项目中获得了以下类层次结构。一些条目可以有容器,并且容器可以有一些内容。容器和内容类是抽象类。ASP MVC 3 ajax与json模型绑定到复杂类

Hierarchy

我需要接收来自浏览器JSON请求,并将其绑定到模型,该模型是Entry类的类型。问题是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"; 
} 

以下请求导致服务器异常: 不能创建一个抽象类。我可以添加类型字段,以JSON例如要求:

{ Name: 'Some Name', Containers: [{ Type: 'FullContainer', ContainerId: 0}] }; 

如何指示模型绑定机制,它映射了类型字段设置为“FullContainer”到FullContainer类的对象?

回答

0

是输入视图模型?基本条目中包含的属性是否足以满足您的帖子,即使它是全容器类型?如果它不是视图模型,但它完全是你真正需要的,我建议制作一个不抽象的EntryViewModel类。

否则,请在这里查看Darin的答案Polymorphic model binding