好吧,我需要制作两张几乎相等的问卷。不同之处在于,一个人的问题比另一个人更多。所以我创建了一个只有ID(持久性)的类作为两者的基类:
public class BaseQuizzClass{
public int ID {get;set;}
}
然后我创建了类,变量的名称几乎相同(我认为它可以帮助使用剃刀):
public class Quizz1 : BaseQuizzClass{
[Display(Name="QuestionHere")]
public string q1 {get;set;}
[Display(Name="QuestionHere")]
public string q2 {get;set;}
...
[Display(Name="QuestionHere")]
public string q9 {get;set;}
}
public class Quizz2 : BaseQuizzClass{
[Display(Name="QuestionHere")]
public string q1 {get;set;}
[Display(Name="QuestionHere")]
public string q2 {get;set;}
...
[Display(Name="QuestionHere")]
public string q9 {get;set;}
[Display(Name="QuestionHere")]
public string q10 {get;set;}
}
然后我使用BaseQuizzClass作为模型创建了一个View,因此我可以将子类作为参数传递给它。但我不知道如何访问childs类属性。
OBS:每个问题都有自己的文字,在显示标注中定义。
有什么办法可以做我想要的吗? (我不确定我是否清楚)
答案 0 :(得分:2)
我可能会稍微改变模型:
public class QuestionClass
{
public String Question { get; set; }
public String Answer { get; set; }
}
public class QuizzClass
{
public Int32 ID { get; set; }
[UIHint("Question")]
public IList<QuestionClass> Questions { get; set; }
}
然后为问题创建一个视图,而不是使用对象的“键/值”设置[DisplayAttribute]
。
// ~/Views/_controller_/_action_.cshtml
@model QuizzClass
@using (Html.BeginForm())
{
for (var q = 0; q < Model.Questions.Length; q++)
{
// ~/Views/Shared/EditorTemplates/Question.cshtml
@Html.EditorFor(x => Model.Questions[q]);
}
}
只是看起来过度杀戮才有这么多相似之处,但明确地在你的“不同”对象中调出每个问题。
答案 1 :(得分:0)
我认为你的架构有问题。为什么不只是有一个集合的课程来解决你的问题呢?