У меня есть следующая иерархия классов в моем проекте 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";
}
Следующий запрос приводит к исключению сервера: Невозможно создать абстрактный класс. Я могу добавить поле Type в запрос json, например:
{ Name: 'Some Name', Containers: [{ Type: 'FullContainer', ContainerId: 0}] };
Как проинструктировать механизм привязки модели для сопоставления объекта, для которого в поле «Тип» установлено значение «FullContainer», в класс FullContainer?