2012-05-07 3 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}] }; 

Как инструктировать модель связывания механизм для отображения объекта, который получил Type поле значение «FullContainer» к классу FullContainer?

ответ

0

Есть ли вступление модель? Являются ли свойства, содержащиеся в базе Entry Entry достаточными для вашего поста, даже если это тип Full Container? Если это не модель представления, но это все, что вам действительно нужно, я бы посоветовал сделать класс EntryViewModel, который не является абстрактным.

В противном случае ознакомьтесь с ответом Дарина здесь Polymorphic model binding.

 Смежные вопросы

  • Нет связанных вопросов^_^