2010-01-15 5 views
2

Je pensais à créer un utilitaire UtilityController qui contient uniquement des actions qui renvoient json parce que je pourrais avoir plusieurs formulaires avec une liste déroulante province/état et une liste déroulante pays. Ces listes déroulantes sont filtrées par sélection avec ajax ... uniquement show prov/state dans le pays sélectionné.Asp.Net MVC Utility Controller Action pour les listes déroulantes filtrées

Que pensez-vous de cette idée ... est-ce bon ... mauvais ... ni l'un ni l'autre?

Merci

+0

Comment construisez-vous les listes déroulantes pour la version non ajax? –

+0

Hmmm ... Je n'avais pas prévu d'avoir une version non-ajax. Je pense que c'est OK pour forcer nos utilisateurs à avoir javascript activé. Avez-vous des opinions fermes contre cela, si oui, pourquoi? Merci – Craig

Répondre

2

Je ne recommanderais pas d'avoir un contrôleur utilitaire ou n'importe quel type de classe utilitaire. À mon avis, c'est une mauvaise pratique, car cela deviendra facilement une décharge pour le code que vous ne savez pas où il appartient. Cela viole les principes de S.O.L.I.D car vous ne séparez pas vos préoccupations. Il est préférable de regarder quelles actions vous voulez et trouver le contrôleur approprié pour chacun d'entre eux.

+0

C'est un peu ce que j'ai ressenti. Donc, puisque les listes déroulantes pays/province seront utilisées pour plusieurs contrôleurs ... suggérez-vous de faire une action sur chaque contrôleur ... dites GetProvincesByCountryId (int countryId), qui a besoin de cette fonctionnalité? Alors toutes les actions GetProvincesByCountryId utiliseraient juste le même code pour générer le résultat? Est-il raisonnable d'avoir la même signature de méthode sur plusieurs contrôleurs? – Craig

+1

Vous n'avez pas besoin de l'avoir sur le contrôleur qui gère la requête en cours. Vous pouvez choisir n'importe quel contrôleur qui gère ce genre de chose et appeler cette action de toutes les vues qui ont besoin de ces données. Par exemple, si vous avez quelque chose comme un ProvinceController vous mettriez la méthode "GetProvincesByCountryId" sur ce contrôleur. Cela ne viole rien car la requête json est une requête séparée qui n'a rien à voir avec la requête initiale pour la vue. Je ne recommanderais pas d'avoir la même signature sur plusieurs contrôleurs s'ils traitent la même chose. –

+0

Oh, d'accord ... au lieu de mettre l'action en bas, disons que le contrôleur d'enregistrement a un contrôleur Provinces avec des méthodes connexes. Bizarrement, ça ne m'est jamais arrivé et ça a beaucoup de sens. Génial merci! – Craig

1

Je suis un modèle similaire dans l'une de mes applications Web. J'ai par défaut la page pour charger les états américains et ai pré-sélectionné USA dans la liste déroulante car une grande majorité des visiteurs sont de là, mais ensuite utiliser JSON pour charger les états s'ils commutent.

Questions connexes