我怎么能用一个视图来编辑两个有共同基类的不同类呢
本文关键字:基类 两个 同类 编辑 怎么能 一个 视图 | 更新日期: 2023-09-27 18:25:16
好吧,我需要创建两个几乎相等的问卷。不同的是,一个人比另一个人有更多的问题。因此,我创建了一个只有ID(to persistence)的类,作为两者的基类:
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,这样我就可以将一个子类作为参数toit传递。但是我不知道如何访问child的类属性。
OBS.:每个问题都有自己的文本,在"显示"注释中定义。
有办法做我想做的事吗?(我不太确定我是否清楚)
我可能会把模型调高一点:
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]);
}
}
它看起来过于相似,但却明确地说出了你"不同"对象中的每个问题。
我认为您的体系结构有缺陷。为什么不开一堂课,收集你的问题呢?