2013-07-29 4 views
-1

У меня есть ViewModel, состоящий из нескольких свойств:ASP.NET MVC 4 - Проводка полиморфных объектов данных

public class FooDataViewModel : IValidatableObject 
{ 
/* Several Properties working as expected */ 

public ICollection<Foo> Foos {get; set;} 

/* Validation working as expected */ 
} 

Foo держит несколько полей и работает, как ожидалось:

public class Foo 
{ 
/* Only a few basic properties, works as expected */ 
} 

Но я есть некоторые объекты, которые Foobar:

public class FooBar : Foo, IValidatableObject 
{ 
/* Just a few more properties and some conditional validation */ 
} 

Я создал пользовательский шаблон редактор для обоих Foo и FooBar. Для моего редактирования я просто использую '@ Html.EditorFor (m => m.Foos)', и отображаются редакторы для Foo и FooBar. Но когда я отправляю свой метод HttpPost, создаются только объекты Foo, и конкретные данные FooBar теряются. Как я могу убедиться, что объекты FooBar созданы?

ответ

1

Как я могу убедиться, что объекты FooBar созданы?

Вам необходимо будет включить эту информацию в запрос и написать настраиваемое связующее устройство, которое сможет использовать эту информацию и создать экземпляр соответствующего типа. Я проиллюстрировал концепцию здесь: ViewModel with List<BaseClass> and editor templates

+0

Ссылка была полезна и помогла мне справиться с моей проблемой. Этот вопрос был первоначально для MVC3, поэтому я буду следить, спрашивая: были ли какие-либо изменения/оптимизации, которые будут применяться для MVC4? – User

+0

Нет, никаких изменений/оптимизаций для MVC 4 в этом аспекте нет. –

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