Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在一个视图中显示来自多个模型的数据_Asp.net Mvc_Asp.net Mvc 3_Model View Controller - Fatal编程技术网

Asp.net mvc 在一个视图中显示来自多个模型的数据

Asp.net mvc 在一个视图中显示来自多个模型的数据,asp.net-mvc,asp.net-mvc-3,model-view-controller,Asp.net Mvc,Asp.net Mvc 3,Model View Controller,在MVC3中,我想显示来自两个模型的数据,即。学生和注册进入单个视图。 学生模型 public class Student { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int student_id { get; set; } public string student_name { get; set; } public s

在MVC3中,我想显示来自两个模型的数据,即。学生和注册进入单个视图。 学生模型

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,以便在视图中显示?我使用的是存储库设计模式。

您可以使用DynamicPage,请查看以下示例

我们需要使用动态视图页面。() 遵循以下步骤:

  • 创建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


    它应该像您预期的那样工作………

    一般来说,控制器将负责联系模型,将返回的结果集存储在视图将使用的变量/数组/struc中。模型和视图组件/类将在控制器中注册

    例如:

    <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>
    
    
    

    Event display.institutions正在调用模型组件userInstitutionRights并将结果存储在resultKey request.institutions中,它包括两个查看页面userNav,userInstitutions,其中每个页面都可以使用resultKey。

    感谢您的及时回复。。。我不知道动态页面。因为我还想将viewmodel用于CRUD操作。[将向您提供有关动态页面的详细信息。您仍然可以使用CRUD操作,因为我假设来自不同模型的数据将具有不同的表单和不同的局部视图。链接:请尝试此帖子以获取答案: