在.Net MVC 4中从单个视图保存多个模型

时间:2012-08-17 13:51:04

标签: asp.net-mvc asp.net-mvc-4

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

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

例:
主题名称
学科带领教师姓名

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

用户会出现并输入主题名称和主题主管教师姓名,然后输入新的班级名称,开始时间和班级教师姓名,一旦他们这样做,他们将提交表格,我需要保存主题名称和主题引导教师姓名到主题模型和班级名称,班级开始时间和班级教师姓名到班级。

  1. 如何在2个模型的单个视图中创建表单字段?
  2. 如何获取提交的数据并将其保存回2个单独的模型?
  3. 如果有人可以帮助我,并提供一些非常棒的示例代码,因为我现在迷路了!

2 个答案:

答案 0 :(得分:3)

这正是viewModels的用途。您可以在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
}

答案 1 :(得分: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 ---