帮助创建视图和更新实体模型

时间:2011-03-13 19:26:28

标签: asp.net asp.net-mvc entity-framework viewmodel

编辑:这个问题很模糊,可能对任何人都没用。我正在向那位“帮助”我的绅士发放互联网资金。

很抱歉,标题有点模糊。我还是asp mvc& EF。这是我的问题。我的DB有点像这样。

Employee
 - ID
 - Name
 - Address

EmployeeJob
 - EmployeeID
 - JobID
 - StartDate

JobTypes
  - ID
  - JobName

我想要一个创建表单,它将显示所有Employee字段以及用户可以选择的JobTypes列表。然后我将结果发回控制器并更新数据库。我已经开始研究自定义视图模型,但我仍然不确定如何将它们放在一起并使其工作。谢谢,

1 个答案:

答案 0 :(得分:1)

创建一个特定的视图模型,该模型反映视图显示界面所需的数据。在这种情况下,员工信息加上当前关系所代表的工作集合。添加显示作业菜单所需的信息 - 在这种情况下,我将使用SelectListItems的枚举(Value = ID,Text = JobName)。

public class EmployeeViewModel
{
    public Employee Employee { get; set; }
    public IEnumerable<string> CurrentJobs { get; set; }
    public int JobType { get; set; } // placeholder for post back value from menu
    public IEnumerable<SelectListItem> JobTypes { get; set; }
}

根据您的目的,您可能需要为该帖子设置不同的模型。

public class EmployeeJobAddition
{
    public Employee Employee { get; set; }
    public int JobType { get; set; }
}

或(这可能会争论视图模型中JobTypes的不同集合)

public class EmployeeJobChange
{
    public Employee Employee { get; set; }
    public IEnumerable<int> CurrentJobTypes { get; set; }  // returns values to keep
    public IEnumerable<int> JobTypes { get; set; } // new jobs to add
}

使用输入名称设置表单,以使用视图模型提供的数据反映要回发的模型。