Отображение данных из нескольких моделей в одном представлении - PullRequest
0 голосов
/ 17 января 2012

В 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; }
}

Как извлечь данные из двух моделей и назначить их для модели представления, чтобы я мог отобразить ее в виде? Я использую Шаблон проектирования репозитория.

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Вообще говоря, контроллер будет отвечать за связь с моделью, сохраняя набор результатов, возвращенный в переменной / массиве / структуре, которую будет использовать представление. Компоненты / классы модели и вида будут зарегистрированы в контроллере.

Пример:

<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 доступен для каждого.

0 голосов
/ 17 января 2012

Вы можете использовать DynamicPage, посмотрите в следующем примере

Нам нужно использовать страницу динамического просмотра.( Дополнительная информация ) Выполните следующие шаги:

  1. Создание типа DynamicViewPage

    public class DynamicViewPage : ViewPage
    {
       public new dynamic Model { get; private set; }    
       protected override void SetViewData(ViewDataDictionary viewData)
        {
            base.SetViewData(viewData);
            Model =  ViewData.Model;
        }`
    }
    
  2. Ваш контроллер будет выглядеть

    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
        });
    }
    
  3. ваш вид должен наследоваться от

    Inherits="DynamicViewPage"
    

Теперь @Model.Login даст вам Loginmodel

@Model.Register даст вам RegisterModel

Это должно работать так, как вы ожидали .........

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...