У меня есть суперкласс типа Вопрос , который имеет несколько подклассов (например, MultipleChoiceQuestion и TextQuestion ).Каждый из подклассов имеет свои собственные шаблоны редактора (например, ~ / Shared / EditorTemplates / MultipleChoiceQuestion.cshtml ).
Что я хотел бы сделать, это создать список Вопрос объекты:
class Questionnaire {
List<Question> Questions;
}
, которые действительно будут содержать экземпляры подклассов:
Questions.Add(new MultipleChoiceQuestion());
Questions.Add(new TextQuestion());
Затем я передаю вопросник в View, где я вызываю:
@Html.EditorFor(m => m.Questions)
Представление успешно отображает правильные шаблоны редактора для определенного подкласса Вопрос моделей.
Проблема заключается в том, что при отправке формы моя Анкета модель (который содержит список типа Вопрос ) содержит только экземпляры Вопрос , а не экземпляры подклассов.Кроме того, все экземпляры Вопрос свойства являются нулевыми.
В качестве теста я передал список типа MultipleChoiceQuestion , и он отлично работает:
class Questionnaire {
List<MultipleChoiceQuestion> Questions;
}
Можно ли как-нибудь заставить HttpPost Action вернуть мою модель с подклассами, созданными с помощью данных моей формы?
Спасибо