在MVC 3中,我想显示来自两个模型的数据。学生和报名单一视图。 学生模型
public class Student
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int student_id { get; set; }
public string student_name { get; set; }
public string father { get; set; }
}
注册模式
public class Enrollment
{
[Key]
public int enrollment_id { get; set; }
public string rollno { get; set; }
public int student_id { get; set; }
public string registration_no { get; set; }
public date registration_date { get; set; }
}
我的ViewModel看起来像这样
public class StudentEnrollmentViewModel
{
public Student_Info Student_Info { get; set; }
public Enrollment_Info Enrollment_Info { get; set; }
[Key]
public int ID { get; set; }
}
如何从两个模型中检索数据并将其分配给viewmodel,以便我可以在视图中显示它?我正在使用Repository Design Pattern。
答案 0 :(得分:0)
您可以使用DynamicPage,请参阅以下示例
我们需要使用动态视图页面。 (More Information) 请遵循以下步骤:
创建DynamicViewPage类型
public class DynamicViewPage : ViewPage
{
public new dynamic Model { get; private set; }
protected override void SetViewData(ViewDataDictionary viewData)
{
base.SetViewData(viewData);
Model = ViewData.Model;
}`
}
您的控制器看起来像
public ActionResult Account(string returnUrl)
{
LoginModel loginmodel = null;//Initialize Model;
RegistrationModel registrationModel = null ;//Initialize Model;
// Any Extra logic
return View("Account", new
{
Login = loginmodel,
Register = registrationModel
});
}
您的视图应该继承自
Inherits="DynamicViewPage"
现在@Model.Login
会给你Loginmodel
@Model.Register
会给你RegisterModel
它应该按预期工作.........
答案 1 :(得分:0)
一般来说,控制器负责联系模型,存储在视图将使用的变量/数组/结构中返回的结果集。模型和视图组件/类将在控制器中注册。
一个例子:
<event-handler event="display.institutions" access="public">
<notify listener="userInstitutionRights" method="getInstitutionsWithDataRightsNOXML" resultKey="request.institutions" />
<view-page name="userNav" contentKey="request.userNav"/>
<view-page name="userInstitutions" contentKey="request.pageContent"/>
<announce event="assemblePage" />
</event-handler>
事件display.institutions正在调用模型组件userInstitutionRights并将结果存储在resultKey request.institutions中,并且包含两个视图页面userNav,userInstitutions,其中resultKey可用于每个。