0

我的 ASP MVC 3 项目中有以下类层次结构。一些条目可以有容器,而那个容器里面可以有一些内容。容器和内容类是抽象类。

等级制度

我需要从浏览器接收 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}] }; 

如何指示模型绑定机制将Type字段设置为'FullContainer'的对象映射到FullContainer类?

4

2 回答 2

0

Entry 是视图模型吗?基本条目中包含的属性是否足以用于您的帖子,即使它是完整容器类型的?如果它不是一个视图模型,但它是你真正需要的,我建议创建一个EntryViewModel非抽象的类。

否则,请在此处查看 Darin 的回答Polymorphic model binding

于 2012-05-07T21:42:14.190 回答
0

我已经在我的主页上发布了答案。

于 2012-10-11T10:25:14.300 回答