我怎么能用一个视图来编辑两个有共同基类的不同类呢

本文关键字:基类 两个 同类 编辑 怎么能 一个 视图 | 更新日期: 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]);
  }
}

它看起来过于相似,但却明确地说出了你"不同"对象中的每个问题。

我认为您的体系结构有缺陷。为什么不开一堂课,收集你的问题呢?