Question

Suivant du question précédente J'ai commencé à me demander - est-il possible d'implémenter des "composants" dans ASP.NET MVC (dernière version)? Et devriez-vous?

Clarifions ce que je veux dire avec un "composant". Avec cela, je veux dire un "Control" (AKA "Widget"), similaire à ceux sur lesquels ASP.NET WebForms est construit. Un GridView pourrait être un bon exemple. Dans les formulaires Web, je peux placer sur mon formulaire un composant DataSource (une ligne de code), un composant GridView (une autre ligne de code) et les lier ensemble (spécifiez un attribut sur GridView). Dans le fichier CodeBehind, je remplit la source de données avec des données (quelques lignes de code de requête DB), et je suis tout défini.

À ce stade, GridView est un composant autonome entièrement fonctionnel. Je peux ouvrir le formulaire et je verrai toutes les données. Je peux le trier en cliquant sur les en-têtes de colonne; Il est divisé en plusieurs pages; Je peux faire glisser les en-têtes de colonne et réorganiser les colonnes; Je peux activer le mode "grouper"; etc. et je n'ai pas besoin d'écrire une autre ligne de code pour tout cela. Le GridView, en tant que composant, a déjà tout le code niché dans ses classes et ses assemblages. Je le place juste sur le formulaire, je l'ai initialisé et ça marche. À certains moments (comme le tri ou la navigation sur une autre page), il effectuera également des rappels AJAX au serveur, mais ceux-ci seront également traités en interne, avec mon code n'ayant aucune connaissance à ce sujet. Et puis il y a aussi des événements que je peux attacher si je veux être informé lorsque quelque chose se produit.

Dans MVC, je ne peux pas voir une façon de faire cela proprement. Bien sûr, il y a les vues partielles, mais celles-ci ne gèrent que la moitié du problème - elles rendent le HTML initial. Certains peuvent être réalisés avec JavaScript côté client (comme la réarrangement des colonnes), mais lorsque la grille doit faire un rappel AJAX (par exemple, pour récupérer la page suivante des données), mon code devra s'impliquer et traiter cela demande. Au mieux, je suppose que je peux fournir des méthodes d'assistance pour la traiter, mais je devrai écrire le code qui les appelle, et également fournir une méthode de contrôleur avec une signature correspondant aux arguments de ce rappel.

Je suppose que je pourrais faire des hacks avec des événements mondiaux ou des itinéraires spéciaux ou quelque chose, mais cela semble ... piraté. Non élégant. Ce n'est peut-être pas la manière MVC? Bien que j'y ai terminé un projet, je suis encore loin d'être un expert du MVC. Mais alors qu'est-ce que c'est? Dans l'application Intranet que nous construisons, des dizaines et des dizaines de telles grilles. Naturellement, je veux qu'ils aient tous un look et un comportement unifié, et je ne veux pas répéter le même code partout.

Alors, quelle est l'approche "MVC" de ce problème?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top