Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用一个视图编辑具有公共基类的两个不同类?_C#_Asp.net Mvc 3_Razor - Fatal编程技术网

C# 如何使用一个视图编辑具有公共基类的两个不同类?

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:每个问题都有自己的文本,在显示注释中定义

我需要制作两份几乎相等的问卷。区别在于一个比另一个有更多的问题。因此,我创建了一个ID(持久性)为基类的类:

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]);
  }
}