【发布时间】:2016-02-23 20:40:23
【问题描述】:
在我的 MVC 项目中,我有一个 Student 模型类和一个 Department 模型类。为了建立一对多关系,我在学生模型类中有一个外键 DepartmentID。
public class Student
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int StudentId { get; set; }
public String LastName { get; set; }
public String FirstName { get; set; }
public String UserName { get; set; }
public String Password { get; set; }
[ForeignKey("Department")]
public int DepartmentID { get; set; }
}
和
public class Department
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int DepartmentID { get; set; }
[Required(ErrorMessage="Department Name cannot be empty")]
public String DepartmentName { get; set; }
[Required(ErrorMessage = "Department Code cannot be empty")]
public String DepartmentCode { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
但是,我希望用户看到的是 DepartmentName,而不是 Student Class 中的 DepartmentID。所以 StudentViewModel 类如下:
//View Model
public class StudentViewModel
{
public Student Student { get; set; }
public int StudentId { get; set; }
[Display(Name="StudentName")]
[Required(ErrorMessage="Student Name cannot be left blank")]
public String StudentFullName
{
get
{
return String.Format("{0} {1}", Student.FirstName, Student.LastName);
}
}
public String UserName { get; set; }
[DataType(DataType.Password)]
public String Password { get; set; }
[DataType(DataType.Password)]
[Compare("Password",ErrorMessage="Passwords do not match")]
[Display(Name="Confirm Password")]
public String C_Password { get; set; }
[Display(Name = "Department Name")]
public String DepartmentName { get; set; }
}
但是如何在我的控制器操作方法中获取部门名称,该方法显示数据库中所有学生的列表。
public ActionResult MyAction()
{
StudentContext context = new StudentContext();
var students = context.Students.ToList();
var departments = context.Departments.ToList();
var student_dept_lst = new List<StudentViewModel>();
var departmentName = String.Empty;
foreach(var s in students)
{
var student_dept = new StudentViewModel();
student_dept.DepartmentName = from d in departments where d.DepartmentID == s.DepartmentID select d.DepartmentName;
}
return View(student_dept_lst );
}
如何将 DepartmentName 链接到从 Context 获得的列表中的每个学生对象?我知道这是微不足道的。但请帮助我。提前致谢。
【问题讨论】:
-
在您的视图中,您应该可以看到 student_dept.DepartmentName。查看代码在哪里?
-
我认为我无法仅填充 viewmodel 集合。所以我忍住了。我无法填充 student_dept_lst 并将视图模型对象添加到其中。
-
@StrugglingCoder 你检查过我下面的答案了吗:)?
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor