C# 如何使用一个视图编辑具有公共基类的两个不同类?
我需要制作两份几乎相等的问卷。区别在于一个比另一个有更多的问题。因此,我创建了一个ID(持久性)为基类的类:C# 如何使用一个视图编辑具有公共基类的两个不同类?,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我需要制作两份几乎相等的问卷。区别在于一个比另一个有更多的问题。因此,我创建了一个ID(持久性)为基类的类: public class BaseQuizzClass{ public int ID {get;set;} } 然后我创建了类,变量的名称几乎相同(我认为使用razor会有所帮助): 然后我使用BaseQuizzClass作为模型创建了一个视图,这样我就可以将一个子类作为参数传递给它。但是我不知道如何访问childs的类属性 OBS:每个问题都有自己的文本,在显示注释中定义
public class BaseQuizzClass{
public int ID {get;set;}
}
然后我创建了类,变量的名称几乎相同(我认为使用razor会有所帮助):
然后我使用BaseQuizzClass作为模型创建了一个视图,这样我就可以将一个子类作为参数传递给它。但是我不知道如何访问childs的类属性
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; }
}
有这么多的相似性,却在“不同”的对象中明确地提出每个问题,这似乎太过分了。我认为您的体系结构是错误的。为什么不创建一个包含问题集合的类呢?您可以使用自定义编辑器作为“测验1”和“测验2”的模板,但如果您不使用唯一的操作名称保存它们,您将在帖子中遇到问题。Quizz1和Quizz2唯一的共同点是它们是BaseQuizzClass,因此,编辑“BaseQuizzClass”的视图只能具有ID属性。您的后期操作无法接受“BaseQuizzClass”,因为您将丢失所有不属于baseWell的属性。。。我会重新映射我的模型。谢谢你的回答!是 啊你和Brad Christie是对的。。。谢谢你的回答!
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; }
}
// ~/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]);
}
}