小编use*_*894的帖子

ASP.NET MVC3绑定到子类

我有一个类型为Question的超类,它有多个子类(例如MultipleChoiceQuestionTextQuestion).每个子类都有自己的编辑器模板(例如〜/ Shared/EditorTemplates/MultipleChoiceQuestion.cshtml).

我想要做的是创建一个Question对象列表:

class Questionnaire {
    List<Question> Questions;
}
Run Code Online (Sandbox Code Playgroud)

这将真正包含子类的实例:

Questions.Add(new MultipleChoiceQuestion());
Questions.Add(new TextQuestion());
Run Code Online (Sandbox Code Playgroud)

然后我将调查问卷传递给View,我打电话给:

@Html.EditorFor(m => m.Questions)
Run Code Online (Sandbox Code Playgroud)

视图成功呈现特定子类问题模型的正确编辑器模板.

问题是,在提交表单时,我的问卷调查模型(包含类型问题列表)仅包含问题的实例,而不包含子类的实例.此外,Question属性的实例都为null.

作为测试,我传入了一个类型为MultipleChoiceQuestion的列表,它工作正常:

class Questionnaire {
    List<MultipleChoiceQuestion> Questions;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让HttpPost Action返回我的模型,并使用我的表单数据实例化子类?

谢谢

c# data-binding razor asp.net-mvc-3

8
推荐指数
1
解决办法
3346
查看次数

标签 统计

asp.net-mvc-3 ×1

c# ×1

data-binding ×1

razor ×1