2010-12-12 22 views

Répondre

8

Si vous devez passer plusieurs modèles, créez un modèle englobant dont les modèles plus petits sont suspendus en tant que propriétés. Par exemple, supposons que vous allez afficher une page pour gérer des groupes d'utilisateurs pour votre application. Vous devrez probablement passer un IEnumerable<UserDisplayModel> et un IEnumerable<GroupDisplayModel> à la vue. Créer un nouveau modèle d'affichage comme ceci:

class GroupManagementDisplayModel 
{ 
    public IEnumerable<UserDisplayModel> Users { get; set; } 
    public IEnumerable<GroupDisplayModel> Groups { get; set; } 
} 

instances de passage de ce modèle à votre point de vue à la place.

+0

Oui, c'est ce que vous allez vouloir faire. Ensuite, vous aurez accès à IntelliSense pour vous aider à sélectionner les attributs que vous souhaitez utiliser. –

1

Si vous trouvez que vous voulez faire beaucoup et que vous ne se soucient pas beaucoup pour la création d'un bon nombre de petits types, vous pouvez utiliser le type de .NET 4 dynamic:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

Dans votre action , passez un type anonyme à votre affichage:

return View(new { Users, Groups }); 

Les référence les dans votre vue comme vous le feriez autrement.

Vous perdez IntelliSense et typage fort de cette façon, mais à moins que vous compilez vos points de vue (qui doit être modifié manuellement votre fichier .csproj et rend la construction beaucoup plus lent), alors vous n'avez pas la compilation de vérifier sur votre vues quand même.

+0

Merci pour votre temps ~ – user469652

+0

Pas de problème. Personnellement, je n'utilise pas cette approche car j'aime IntelliSense, et Resharper permet de générer de petits types rapidement et facilement, mais j'ai inclus cette réponse ici pour l'exhaustivité. –