2009-10-02 11 views
0

J'ai 2 contrôleurs, tâche et utilisateur.2 contrôleur et 1 vue dans ASP.NET MVC

Je dois créer une vue pour "créer une tâche aux utilisateurs". J'ai donc besoin d'une vue "liste d'utilisateurs" et "créer une tâche" ensemble.

Habituellement, les vues héritent de seulement 1 classe.

Comment puis-je créer une vue fonctionnant avec 2 classes?

Vous avez une idée?

Répondre

4

Votre vue ne peut pas et ne doit pas hériter de 2 classes.

Créez un modèle de vue pour votre utilisateur avec une liste de modèles de vue de tâche.

+0

merci, c'est une bonne solution –

+0

mon modèle de vue maintenant comme ci-dessous; public class CreateTaskViewModel { CreateTaskViewModel public (liste des utilisateurs , tâche MU_Task) { this.Users = utilisateur; this.Task = tâche; } liste publique Utilisateurs {get; ensemble privé; } public MU_Task Tâche {get; ensemble privé; } } –

0

Vous pouvez implémenter chaque vue (liste d'utilisateurs et tâche de création) en tant que vues partielles (commandes utilisateur .ascx) et les appeler depuis votre vue (page .aspx).

rendu une vue partielle est effectuée en utilisant la méthode RenderPartial:

this.Html.RenderPartial("UserList"); 
this.Html.RenderPartial("CreateTask"); 

Cela vous permettra de réutiliser et de combiner Vues accross différentes vues (pages). Comme l'indique AmisL, vous pouvez passer différentes parties de votre ViewModel à chaque vue partielle.

+1

Et il est bon de se rappeler que si la vue partielle reçoit null comme modèle de vue, elle essaie de ramasser le modèle de vue de la vue. Cela peut provoquer une erreur de concordance de type de données. –

0

Une vue peut recevoir toute la classe comme modèle, alors il suffit d'écrire une classe personnalisée, comme:

public class UserListAndTasks 
{ 
    public IQuerable<User> UserList; 
    public Task Task; 
} 

Ensuite, dans votre vue, vous pouvez utiliser partials:

<%= Html.RenderPartial("UserList", Model.UserList); %> 
<%= Html.RenderPartial("CreateTask", Model.Task); %> 
Questions connexes