使用Razor MVC3中的ViewModel在单个视图中显示多个模型(仅在视图中显示详细信息)

我的任务是在一个ViewModel显示多个models 。我已经为我的要求创建了一个ViewModel ,但我没有达到我的要求。 请看下面的代码并纠正我哪里出错????

 public partial class StudentsDetail { public int StudentID { get; set; } public int ParentID { get; set; } public string StudentName { get; set; } public string Gender { get; set; } public string FatherName { get; set; } public string MotherName { get; set; } public Nullable DateOfBirth { get; set; } public virtual ParentsDetail ParentsDetail { get; set; } public virtual SchoolDetail SchoolDetail { get; set; } } 

//模型2

  public partial class ParentsDetail { public ParentsDetail() { this.StudentsDetails = new HashSet(); } public int ParentID { get; set; } public string Occupation { get; set; } public string Organization { get; set; } public string AnnualIncome { get; set; } public virtual ICollection StudentsDetails { get; set; } } 

// ViewModel我创建的

  public class ParentsInformationViewModel { public List StudentsDetails { get; set; } public List ParentsDetails { get; set; } public ParentsInformationViewModel(List _studentDetails, List _parentsDetails) //Should i pass all the required parameters that i want to display in view ???? { StudentsDetails = _studentDetails; ParentsDetails = _parentsDetails; } 

//最后这是我在StudentController中定义的方法(我是否在正确的位置/方式中定义了它?)

 public ActionResult StudentViewModel() { ViewBag.ParentsDetail = new ParentsDetail(); //ParentsDetail is my controller List studentListObj = StudentsDetailsDAL.GetStudentDetails(); List ParentInfoVMObj = new List(); //foreach (var student in studentListObj) //{ // ParentInfoVMObj.Add(new ParentsInformationViewModel(student.StudentID, student.ParentID)); //} //ParentInfoVMObj.Add(ParentInfoVMObj); /// don't know how to call the required viewmodel return View(ParentInfoVMObj); } 

我知道ViewModel的上述方法是错误的,但如何使用它或我在哪里出错我无法得到。 我想在ViewModel中显示ViewModel作为详细视图。 请纠正我,因为我是MVC3的首发。

提前致谢!!

在控制器中,按如下方式定义操作方法。

 public ActionResult ParentsDetails() { var studentDetails = new List(); var parentDetails = new List(); // Fill your lists here, and pass them to viewmodel constructor. var viewModel = new ParentsInformationViewModel(studentDetails, parentDetails) // Return your viewmodel to corresponding view. return View(viewModel); } 

在您的视图中定义您的模型。

 @model MySolution.ViewModels.ParentsInformationViewModel 

您的视图中是否声明您正在接收类型模型

在视图中:

 @model IEnumerable