2012-01-17 4 views
0

В MVC 3 я хочу отображать данные из двух моделей, а именно: Студент и регистрация в единое представление. модель StudentОтображение данных с нескольких моделей в одном представлении

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

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

+0

Попробуйте это сообщение для ответов: http://stackoverflow.com/questions/4764011/multiple-models-in-a-view – GShenanigan

ответ

0

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

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

  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

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

+0

Спасибо за ваш быстрый ответ ... Посмотрите на него :) – Bahdeng

+0

Я не знать о динамической странице. Потому что я также хотел бы использовать viewmodel для операций CRUD. – Bahdeng

+0

[http://lostechies.com/seanbiefeld/2010/06/23/dynamic-view-page-mvc-without-a-view-model/] предоставит вам подробную информацию о динамической странице. Вы все еще можете использовать операцию CRUD, поскольку я предполагаю, что данные из другой модели будут иметь разные формы и разные частичные представления. – Manas

0

Вообще говоря, контроллер будет нести ответственность за контакт с моделью, сохраняя результирующий набор, возвращенный в переменной/array/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> 

display.institutions Событие звонит компонентную модель userInstitutionRights и сохранения результата в resultKey request.institutions и в том числе два просматривать страницы userNav, userInstitutions, где resultKey доступно каждому ,

Смежные вопросы