8
votes

Y a-t-il des filtres d'action dans votre projet que vous ressentez sont indispensables?

Je ne suis toujours pas totalement claire sur la raison pour laquelle je devrais construire des filtres d'action personnalisés. Peut-être que quelques exemples aideraient.

Y a-t-il des filtres d'action dans votre projet que vous vous sentez comme un incontournable? Peut-être même si important que vous les réutilisez dans tous vos projets MVC?


0 commentaires

6 Réponses :


3
votes

J'utilise un filtre d'action "Logging" pour enregistrer tous les appels à mes contrôleurs avec une vidage des paramètres - cela peut être très utile lors des tests tiers me permettant de voir comment / pourquoi / quand les gens interagissent avec l'application .

Bien que ce ne soit pas un filtre d'action, je placez également un crochet de journalisation dans mes référentiels qui déblose le SQL généré par n'importe quel code LINQ2SQL ... à nouveau utile pour voir exactement ce qui est exécuté et quand.


2 commentaires

J'aime un peu comme ça ... comment "lourd" est votre journalisation (combien d'incidence sur la performance a-t-elle?)


Je pense que les frais généraux sont assez bas .... J'utilise actuellement l'utilitaire de journalisation NLog ( nlog-project.org ) pour la journalisation réelle. J'ai aussi utilisé que j'ai également utilisé log4net ( Logging.apache.org/log4net/index.html ) avec succès.



2
votes

Mon filtre "DOIT avoir" préféré que j'utilise est celui qui inspecte le modèle de vue pour voir s'il y a des listes nulles. S'il y en a, il essaie de les remplir de la base de données. J'utilise principalement cela pour remplir des listes de dépose partagées afin que je n'ai pas à mettre ce code dans l'action du contrôleur.


2 commentaires

Quant à moi, vous devriez utiliser des liants de modèle pour une telle chose.


@Sergey, c'est sur le chemin de la vue, pas sur le chemin de la route.



1
votes

Filtre de validation d'état non modèle

Ceci est un scénario quotidien de créer des enregistrements uniques dans la DB. Supposons que vous ayez une entité utilisateur . Vous avez tous les attributs de validation possibles définis dessus, mais vous ne pouvez pas la mettre dessus. Et c'est si l'instance d'entité est unique.

Pourquoi avons-nous besoin d'un quand même?

Ce sont deux processus les plus courants avec l'entité utilisateur où la validation est impliquée:

  1. Création de nouveaux utilisateurs
  2. Mise à jour des données de l'utilisateur

    Alors, vous créez un nouvel utilisateur, vous devez probablement vérifier s'il est unique dans votre DB (nom d'utilisateur ou email ou quelque chose de similaire; quelque chose doit être vérifié pour l'unicité).

    Mais lorsque vous faites une mise à jour, l'unicité ne doit pas être vérifiée, car l'utilisateur existe déjà dans la DB.

    Comment pouvons-nous résoudre ce problème?

    En utilisant un filtre d'action sur le Créer Action. Mais puisque ce type de filtre devrait être utilisé tous les types d'entités, il est une chose sage de le rendre plus générique et réutilisable, afin que nous puissions réellement utiliser cela toutes sortes d'entités.

    Voici comment je l'ai fait.


1 commentaires

Cela ressemble à ce qu'il serait mieux adapté à une couche de service. Techniquement, MVC est votre couche UI uniquement.



2
votes

Filtre de validation recaptcha

Tout site Web confronté au public a certainement besoin d'une sorte de validation humaine captcha. Alors, pourquoi ne pas utiliser celui qui est très fort et qui a un très bon but derrière cela. reCAPTCHA .

Intégration avec MVC est plutôt facile.


0 commentaires

2
votes

Filtre de navigateur non pris en charge (UBF) - Demande de contrôle.Browser et redirige vers la page de téléchargement de navigateur ou une page légère.

Par défaut, tous nos contrôleurs ne prend en charge que les navigateurs qui soutiennent JQuery. Mais le contrôleur de guind-page de programmeur avec attribut spécial pour le remplacement UBF

Les nouveaux filtres globaux MVC3 utilisent l'UBF encore plus facile.


2 commentaires

Il existe plusieurs implémentations de filtres mondiaux pour MVC 1 et 2. voir ijoininedfilter (mon préféré) ou MVCTTURNINE. geekswithblogs.net/wesm/archive/2009/12/11/ ijoined-filter.as px & MVCTURTURINE.CODEPLEX.COM


Oui, je sais, nous avons développé notre propre. Votez pour le principe NIH! :) Merci pour les liens Ijoininedfilter Infrastructure est très proche de notre propre mise en œuvre.



0
votes

J'ai deux je ne peux pas vivre sans:

a) AjaxMasterPageInjectorattribute: le travail de ce petit gars consiste à vérifier si la demande Isajax () puis échangeez-le à l'ajaxMasterPage chromelable, selon le cas. La corolarrie est le jsoncommandinterceptor - il prend la réponse et la modifie à une commande JSON pour les scénarios AJAX au besoin. Permet de faire une seule chaîne d'action qui devient dynamiquement Ajaxy si vous en avez besoin.

B) ViewModelWrapperInjectorAttribute: saisit le modèle de vue et insère dans une vue plus globale de la vue sur le site. Garde vos actions consacrées à la gestion de ce qu'ils devraient et fobre de l'entreprise de remplir / fournir ladite viewModelwrapper à un endroit plus infrastructurel.


0 commentaires