C# MVC复杂模型绑定到列表<;T>;
我是c#MVC的新手,如果可能的话,或者如果有人能给我指出正确的方向,我真的很想得到一些帮助。我已经花了好几个小时在网上寻找解决方案,但我还没有找到任何有用的东西,这就是我为什么在这里发帖的原因 我正在为我的公司创建一个员工数据库web应用程序,例如,我有以下几个类C# MVC复杂模型绑定到列表<;T>;,c#,web,model-view-controller,C#,Web,Model View Controller,我是c#MVC的新手,如果可能的话,或者如果有人能给我指出正确的方向,我真的很想得到一些帮助。我已经花了好几个小时在网上寻找解决方案,但我还没有找到任何有用的东西,这就是我为什么在这里发帖的原因 我正在为我的公司创建一个员工数据库web应用程序,例如,我有以下几个类 namespace my_app.Models.Employee { public class Employee { public Employee() { }
namespace my_app.Models.Employee
{
public class Employee
{
public Employee()
{
}
// id
public int id { get; set; }
// employee id/payroll no
public string Employeeid { get; set; }
// employee qualifications
public IList<EmployeeQualification> EmployeeQualifications { get; set; }
}
}
namespace my_app.Models.Employee
{
public class EmployeeQualification
{
public EmployeeQualification()
{
}
// employee Qualification id
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
// employee Qualification institution
public string Institution { get; set; }
// employee Qualification qualificaiton
public string Qualification { get; set; }
public IList<Employee> Employees { get; set; }
}
}
现在我遇到的问题是,我需要帮助,我希望在视图中显示员工(即姓名、地址等),但也能够列出员工的资格,并能够添加和删除资格
我已经在网上看到了很多关于如何通过AJAX和Entity framework SaveChanges方法实现这一点的教程,我相信这会起作用,但我想做的稍微复杂的部分是,我希望更改保留在客户机上,并且只在提交整个表单(包括对employee对象的任何更改)时才进行然后将更改持久化到数据库中
有没有办法用标准mvc控件实现这一点,或者我需要编写大量JavaScript来将更改保存到本地对象数组中,然后在表单提交中附加其他表单数据
我确实写了一大堆jQuery来让它工作,但问题是我需要在应用程序的多个视图上使用这个功能,每次都要编写那么多代码似乎并不明智
非常感谢您的帮助。希望我能给您一个前进的方向 首先,你需要改变你的模型设计。基本上,一个员工可以拥有多个资格,一个资格可以由多个员工拥有。所以你们有很多对很多的关系。这意味着您需要3个模型(员工、员工资格、资格)。第二个模型将保存员工和资格的外键
接下来是UI,在只执行1次提交以持久化数据之前,您希望保留UI中的所有更改。就用户友好的系统设计而言,这实际上是一个非常好的想法。为此,您只需要维护一个SelectedQualificationID列表。然后将该列表保存在一个隐藏字段中,这样提交后,您就可以从DB加载所有限定条件,与列表进行比较,并相应地删除/添加限定条件。如果您还不想将数据发送到DB,请考虑使用cookie、会话、缓存或其他临时保存数据的方式。您可以对同一视图或完全不同的视图执行第二个操作,该操作基于临时数据中的数据构建视图,然后在准备就绪时从该视图持久化到db。
namespace my_app.ViewModels
{
public class EmployeeViewModel
{
public Employee Employee { get; set; }
// more stuff here
}
}