1

我正在编写一个用于存储学校课程数据的应用程序,我需要在 .Net MVC 的单个视图中保存 2 个相关模型,但是我无法理解如何将它们组合在一起。

我有 2 个模型,主题和课程,一个主题可以有多个课程。在我看来,我希望允许用户输入新主题的详细信息,并在单个表单提交中为该主题分配课程。

示例:
学科名称
学科带头人教师姓名

(如果一个学科有多个班级,下面的字段可能是递归的)
班级名称
班级开始时间
班级教师姓名

用户会出现并输入学科名称和学科带头教师姓名,然后输入新班级名称、开始时间和班主任姓名,一旦他们完成此操作,他们将提交表格,我需要保存学科名称和学科将教师姓名引导至学科模型,将班级名称、班级开始时间和班级教师姓名引导至班级。

  1. 如何在单个视图中为 2 个模型创建表单字段?
  2. 如何获取提交的数据并将其保存回 2 个单独的模型?

如果有人可以帮助我并提供一些示例代码,那将是很棒的,因为我现在迷路了!

4

2 回答 2

3

这正是 viewModel 的用途。您在 UI 中创建一个新类并为其提供您需要在视图中访问的任何属性

public class SubjectClassViewModel()
{
  public string SubjectName {get; set;}
  public string LeadTeacherName {get; set;}
  public string ClassName {get; set;}
  public DateTime StartTime{get; set;}
  public string TeacherName{get; set;}
}

然后将您的视图强输入到此视图模型中 在您的控制器中,收集视图模型并将数据保存到适当的表中

[HttpPost]
public ActionResult Details (SubjectClassViewModel viewModel)
{
  //can't really give details here without knowing what pattern you're using for data access
  //but basically you want to
  //save viewModel.SubjectName and viewModel.LeadTeacherName to the Subject table
  //save viewModel.ClassName, etc to the Class table
}
于 2012-08-17T17:59:37.053 回答
1

我可以建议您使用包装器;怎么样?,是的,代表您正在使用的视图或表单并将其设置为您的视图模型类型的主要类,请尝试以下操作:

模型:

public class person
    public property id as integer
    public property name as string
    public property status as integer
end class

public class marriage
    public property husband as person
    public property wife as person
end class

然后在视图中:

@Modeltype marriage

<span>Wife Name:</span></br>
@Model.wife.Name

</br>

<span>Husband Name:</span></br>
@Model.husband.Name

在行动中,我们采取阶级联姻,让每个人分居

dim t_wife as person = marriage.wife
dim t_husband as person = marriage.husband

'Put save wife code here ---

'Put save husband code here ---
于 2012-08-17T14:23:38.370 回答