La transmission des données à la Page principale ASP.NET MVC
Quelle est votre façon de transmettre les données de la Page Maître (à l'aide de ASP.NET MVC) sans casser MVC règles?
Personnellement, je préfère le code abstrait controller (contrôleur de base) ou de la classe de base qui est transmis à tous les points de vue.
- J'ai écrit un guide sur comment j'ai fait ceci: britishdeveloper.co.royaume-uni/2010/06/... devrait aider
Vous devez vous connecter pour publier un commentaire.
Si vous préférez que vos points de vue ont fortement typé afficher les données des classes de ce qui pourrait fonctionner pour vous. D'autres solutions sont sans doute plus corriger mais c'est un bel équilibre entre le design et la praticité à mon humble avis.
La page maître prend une vue fortement typée classe de données ne contenant que des informations pertinentes:
Chaque point de vue à l'aide de cette page maître prend une vue fortement typée classe de données contenant des informations et d'en déduire le maître des pages d'affichage de données:
Car je ne veux pas des contrôleurs individuels de savoir quelque chose au sujet de rassembler les pages maîtres de données j'encapsuler la logique dans une usine qui est transmis à chaque contrôleur:
Héritage correspond à la maîtrise de vue de la relation bien, mais quand il s'agit de rendre les partiels /contrôles utilisateur, je vais composer leur affichage des données dans la vue pages de données, par exemple
C'est un code d'exemple seulement et ne vise pas à compiler comme est. Conçu pour ASP.Net MVC 1.0.
where T : MasterViewData, new()
indique au compilateur que la méthode de création ne peut être appelée que pour les types qui s'étendentMasterViewData
(quiIndexViewData
dans ce cas), et qui utilisent un défaut ou de non-paramètre du constructeur. En d'autres termes, j'ai besoin d'être en mesure de direMasterViewData data = new T();
.Navigation
propriété?Je préfère la rupture du data-driven pièces de la vue principale en partiels et les rendant à l'aide de Html.RenderAction. Cela a plusieurs avantages distincts par rapport à la vision populaire de modèle de l'héritage de l'approche:
Html.RenderAction
, qui profite de la DI et tout ça. Est-ce vrai? Est-il un risque en prévoyant la possibilité pour les "intelligents" les utilisateurs à la demande de l'une de ces actions directement? De toute façon à l'empêcher?MODIFIER
Erreur Générique a fourni une meilleure réponse ci-dessous. Veuillez le lire!
Réponse Originale À Cette Question
Microsoft a effectivement posté une entrée sur le "officielle" de la façon pour gérer cela. Cela constitue une étape-par-étape de plain-pied avec une explication de leur raisonnement.
En bref, ils recommandent d'utiliser un résumé de contrôleur de classe, mais voyez par vous-même.
Résumé contrôleurs sont une bonne idée, et je n'ai pas trouvé une meilleure façon. Je suis curieux de voir ce que d'autres personnes l'ont fait, comme bien.
J'ai fait quelques recherches et suis tombé sur ces deux sites. Peut-être qu'ils pourraient aider.
ASP.NET MVC Astuce n ° 31 – la transmission des Données à des Pages Maîtres et des Contrôles Utilisateur
La transmission des Données à des Pages Maîtres avec ASP.NET MVC
Je trouve que la mère commune de tous les objets de modèle que vous passez à la vue est exceptionnellement utile.
Il y aura toujours tendance à être commun certaines propriétés du modèle entre les pages de toute façon.
La Demande.Params objet est mutable. Il est assez facile d'ajouter des valeurs scalaires dans le cadre de la demande de traitement de cycle. Du point de vue de la perspective, que l'information aurait pu être fourni dans la chaîne de Requête ou un FORMULAIRE POST. hth
J'chose qu'une autre bonne façon serait de créer une Interface pour afficher avec certains Biens comme ParentView de certains d'interface, de sorte que vous pouvez l'utiliser à la fois pour les contrôles qui ont besoin d'une référence à la page(contrôle parental) et de maîtrise des points de vue qui doit être accessible à partir de points de vue.
Les autres solutions que le manque d'élégance et de prendre trop de temps. Je m'excuse pour cela très triste et pauvre chose presque toute une année plus tard:
Donc clairement, j'ai cette statique de la méthode Get() sur SiteMasterViewData qui renvoie SiteMasterViewData.