C# ASP.NET MVC、显示和;发布来自两个独立模型的数据

C# ASP.NET MVC、显示和;发布来自两个独立模型的数据,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在构建一个申请表,目前有三个模型用于处理所有数据,并与我的DBMS链接 ApplicationSubmission.cs:包含ID、字符名和添加日期字段 ApplicationQuestion.cs:它包含数据结构并从数据库中提取问题,我将使用数据库显示在网站前端 ApplicationAnswer.cs:包含ID、应用程序ID、问题ID和答案字段。应用程序id和问题id需要与上述两个模型中的id链接 ApplicationSubmission.cs public partial cla

我正在构建一个申请表,目前有三个模型用于处理所有数据,并与我的DBMS链接

  • ApplicationSubmission.cs
    :包含ID、字符名和添加日期字段
  • ApplicationQuestion.cs
    :它包含数据结构并从数据库中提取问题,我将使用数据库显示在网站前端
  • ApplicationAnswer.cs
    :包含ID、应用程序ID、问题ID和答案字段。应用程序id和问题id需要与上述两个模型中的id链接
ApplicationSubmission.cs

public partial class ApplicationSubmission
{
    public long id { get; set; }

    [Column(TypeName = "text")]
    public string character_name { get; set; }

    public DateTime? date_added { get; set; }
}
ApplicationQuestion.cs

public partial class ApplicationQuestion
{
    public int id { get; set; }

    [Column(TypeName = "text")]
    public string question { get; set; }

    [Column(TypeName = "text")]
    public string description { get; set; }
}
ApplicationAnswer.cs

public partial class ApplicationAnswer
{
    public int id { get; set; }

    public int application_id { get; set; }

    public int question_id { get; set; }

    [Column(TypeName = "text")]
    public string answer { get; set; }
}

我的问题是:我如何在razor视图中实现这些,这样我就可以完成问题名称/描述,但将发布的数据放入一个新的ApplicationAnswer对象,但引用与之相关的问题id?

也许您可以这样做

public partial class ApplicationAnswer
{

    public ApplicationQuestion question { get; set; }
    public ApplicationSubmission submission { get; set; }

    public int id { get; set; }

    public int application_id { get; set; }

    public int question_id { get; set; }

    [Column(TypeName = "text")]
    public string answer { get; set; }
}

然后,您的视图将只接受ApplicationAnswer模型,但从该模型中,它还可以访问Submission和Question属性。

创建一个包含这些模型类中所有必需属性的viewmodel如何?另请参阅:。通常razor本身不支持此用例。您通常会做什么:将您提交的模型作为razor视图模型,然后通过ajax请求获取所有问题和其他数据,并用javascript填充它。或者,如果您使用的是asp.net core,则在本例中您可能希望使用“视图组件”。