请考虑以下事项。
public class DemographicsModel
{
public List<QuestionModel> Questions { get; set; }
}
//Does not work at all if this class is abstract.
public /*abstract*/ class QuestionModel
{
//...
}
public class ChooseOneQuestionModel : QuestionModel
{
//...
}
public class ChooseManyQuestionModel : QuestionModel
{
//...
}
public class RichTextQuestionModel : QuestionModel
{
//...
}
public class TextQuestionModel : QuestionModel
{
//...
}
[HttpPost]
public ActionResult Demographics(DemographicsModel model)
{
//...
}
我的观点会有DemographicsModel
,其中包含如上所示的所有不同类型的众多问题。表单完成并POST
回到服务器后,Questions
的{{1}}属性将重新填充正确的问题数,但它们都是{{1}类型而不是具体的类型。
如何让这个东西理解要实例化的类型?
答案 0 :(得分:3)
答案 1 :(得分:1)
ASP.NET MVC内置的模型绑定不支持抽象类。您可以滚动自己来处理Abstract类,但请参阅ASP.NET MVC 2 - Binding To Abstract Model。
答案 2 :(得分:0)
我会跳到这里,即使看起来你已经解决了它。
但是
public class DemographicsModel<T> Where T : QuestionModel
{
public List<T> Questions { get; set; }
}
工作?
[HttpPost]
public ActionResult Demographics(DemographicsModel<ChooseOneQuestionModel> model)
{
//...
}