2015-03-11 3 views
1

Я хочу передать две модели для просмотра. У меня есть две моделиЭлемент модели, переданный в словарь, имеет тип «System.Tuple MVC

public class Department 
{ 
    public int DepartmentID { get; set; } 
    public string DepartmentName { get; set; } 
    public string Image { get; set; } 

    public List<Teacher> Teachers { get; set; } 
} 

и второй

public class Teacher 
{ 
    public int TeacherID { get; set; } 
    public string TeacherName { get; set; } 
    public string TeacherLname { get; set; } 
    public int DepartmentID { get; set; } 
    public string Image { get; set; } 

    public Department Department { get; set; } 


} 

Я сделал ViewModel

public class ViewModel 
{ 
    public List<Teacher> Teachers { get; set; } 
    public List<Department> Departments { get; set; } 
} 

Мой контроллер

public ActionResult Index() 
    { 
     ViewModel model = new ViewModel(); 

     // retreive from database 
     model.Teachers = new List<Teacher>() { new Teacher() }; 
     model.Departments = new List<Department>() { new Department() }; 

     return View(model); 
    } 

и в представлении меня следующий

@model Tuple<IEnumerable<_167School.Models.Teacher>,IEnumerable<_167School.Models.Department>> 


@foreach (var student in Model.Item2) 
{ 
    <tr> 
     <td>@student.DepartmentName</td> 

    </tr> 
} 
@foreach (var teacher in Model.Item1) 
{ 
    <tr> 
     <td>@teacher.TeacherName</td> 
     <td>@teacher.TeacherLname</td> 
     <td>@teacher.DepartmentID</td> 
    </tr> 
} 

и сайт идет во время выполнения и скажите мне, что

The model item passed into the dictionary is of type '_167School.ViewModels.ViewModel', but this dictionary requires a model item of type 'System.Tuple`2[System.Collections.Generic.IEnumerable`1[_167School.Models.Teacher],System.Collections.Generic.IEnumerable`1[_167School.Models.Department]]'. 

Я хочу, чтобы отобразить две модели данных в одном месте. Я пробовал этот путь.

ПОМОГИТЕ Благодарности

+2

Вы рассматриваете потребности быть '@model ViewModel'. Затем войдите в модель с помощью '@foreach (учитель var в Model.Teachers) {....}' –

+0

, когда я использую @Model на мой взгляд, View не смог найти мою модель представления и как я могу сказать, Я использую aa Tuple? –

+3

Не используйте 'Tuple'! Ваш передающий тип 'ViewModel' для представления. Убедитесь, что вы используете полное имя - '@model YourAssembly.ViewModel' или добавьте оператор' @ using'. –

ответ

3

Вы проходя TypeOf ViewModel к представлению, но ваш взгляд заявляет модель как Tuple<T1, T2>. Изменение вида на

@model YourAssembly.ViewModel 

, а затем петлю через коллекцию с помощью

@foreach (var teacher in Model.Teachers) 
{ 
    <tr> 
    <td>@teacher.TeacherName</td> 
    <td>@teacher.TeacherLname</td> 
    <td>@teacher.DepartmentID</td> 
    </tr> 
} 
Смежные вопросы