I have a superclass of type Question which has multiple subclasses (e.g. MultipleChoiceQuestion and TextQuestion). Each of the subclasses have their own editor templates (e.g. ~/Shared/EditorTemplates/MultipleChoiceQuestion.cshtml).
What I would like to do is create a list of Question objects:
class Questionnaire {
List<Question> Questions;
}
which will really contain instances of the subclasses:
Questions.Add(new MultipleChoiceQuestion());
Questions.Add(new TextQuestion());
I then pass the questionnaire to the View, where I call:
@Html.EditorFor(m => m.Questions)
The view successfully renders the correct editor templates for the specific subclass Question models.
The problem is that when the form is submitted, my Questionnaire model (which contains a list of type Question) contains only instances of Question and not the instances of the subclasses. Furthermore the instances of Question properties are all null.
As a test, I have passed in a list of type MultipleChoiceQuestion and it works fine:
class Questionnaire {
List<MultipleChoiceQuestion> Questions;
}
Is there any way I can get the HttpPost Action to return my model with the subclasses instantiated with my form data?
Thanks