ASP MVC 3 ajax与json模型绑定到复杂类
问题描述:
我在ASP MVC 3项目中获得了以下类层次结构。一些条目可以有容器,并且容器可以有一些内容。容器和内容类是抽象类。ASP MVC 3 ajax与json模型绑定到复杂类
我需要接收来自浏览器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类的对象?
答
是输入视图模型?基本条目中包含的属性是否足以满足您的帖子,即使它是全容器类型?如果它不是视图模型,但它完全是你真正需要的,我建议制作一个不抽象的EntryViewModel
类。
否则,请在这里查看Darin的答案Polymorphic model binding。