Recherche…


Introduction

Le sujet principal de cette rubrique utilisant plusieurs classes de modèles dans la couche d'affichage de MVC

Utilisation de plusieurs modèles dans une vue avec ExpandoObject dynamique

ExpandoObject (l'espace de noms System.Dynamic ) est une classe qui a été ajoutée à .Net Framework 4.0 . Cette classe nous permet d'ajouter et de supprimer dynamiquement des propriétés sur un objet lors de l'exécution. En utilisant l'objet Expando, nous pouvons ajouter nos classes de modèle dans un objet Expando créé dynamiquement. L'exemple suivant explique comment utiliser cet objet dynamique.

Modèle d'enseignant et d'étudiant:

public class Teacher  
{  
    public int TeacherId { get; set; }    
    public string Name { get; set; }  
} 

public class Student  
{  
    public int StudentId { get; set; }  
    public string Name { get; set; }  
}

Méthodes de liste des enseignants et des étudiants:

public List<Teacher> GetTeachers()  
{  
    List<Teacher> teachers = new List<Teacher>();  
    teachers.Add(new Teacher { TeacherId = 1, Name = "Teacher1" });  
    teachers.Add(new Teacher { TeacherId = 2, Name = "Teacher2" });  
    teachers.Add(new Teacher { TeacherId = 3, Name = "Teacher3" });  
    return teachers;  
}   

public List<Student> GetStudents()  
{  
    List<Student> students = new List<Student>();  
    students.Add(new Student { StudentId = 1, Name = "Student1"});  
    students.Add(new Student { StudentId = 2, Name = "Student2"});  
    students.Add(new Student { StudentId = 3, Name = "Student3"});  
    return students;  
}

Contrôleur (utilisant un modèle dynamique):

public class HomeController : Controller  
{  
    public ActionResult Index()  
    {  
        ViewBag.Message = "Hello World";  
        dynamic mymodel = new ExpandoObject();  
        mymodel.Teachers = GetTeachers();  
        mymodel.Students = GetStudents();  
        return View(mymodel);  
    }  
}

Vue:

@using ProjectName ; // Project Name  
@model dynamic  
@{  
    ViewBag.Title = "Home Page";  
}  
<h2>@ViewBag.Message</h2>  

<h2>Teacher List</h2>  

<table>  
    <tr>  
        <th>Id</th>    
        <th>Name</th>  
    </tr>  
    @foreach (Teacher teacher in Model.Teachers)  
    {  
        <tr>  
            <td>@teacher.TeacherId</td>  
            <td>@teacher.Name</td>  
        </tr>  
    }  
</table>  

<h2>Student List</h2>  

<table>  
    <tr>  
        <th>Id</th>  
        <th>Name</th>  
    </tr>  
    @foreach (Student student in Model.Students)  
    {  
        <tr>  
            <td>@student.StudentId</td>   
            <td>@student.Name</td>  
        </tr>  
    }  
</table> 


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow