Quelles sont vos principales leçons apprises lors du démarrage de ASP.NET MVC que vous mettriez en évidence à quelqu'un qui commence afin d'éviter ces erreurs? P>
11 Réponses :
N'oubliez pas la partie "Tests de l'unité" du motif. P>
nom du contrôleur :) p>
motif de test unitaire p>
N'utilisez pas la collection de formulaires, utilisez la liaison de modèle. P>
Essayez de ne pas utiliser ViewData, créez une viewModel. P>
Si vous avez une boucle ou une boucle si à votre vue, écrivez un assistant HTML. P>
gentillesse, p>
DAN P>
Essayez de toujours utiliser un point de vue pour passer des données entre le contrôleur et la vue.
Vous pensez peut-être que vous n'en avez pas besoin d'un, vous pouvez simplement passer votre modèle autour, mais tout à coup, vous avez besoin d'une boîte de liste avec plusieurs options pour modifier un modèle ou afficher un message (pas de message de validation) et vous commencez à ajouter des éléments à la vue , avec des cordes magiques comme des clés, rend l'application plus difficile à maintenir.
Il existe également des problèmes de sécurité que vous résolvez avec une vue de vue.
Par exemple: Votre vue permettrons à l'utilisateur de changer son nom et son email et des messages sur l'action p> Quelqu'un pourrait altérer votre formulaire et Publiez un nouveau mot de passe et un nom d'utilisateur et vous devrez faire très attention au comportement par défaut.
Maintenant, si vous utilisez une vue de vue comme: p> Le problème est parti. P> p>
Pourquoi ne pas exclure le «nom d'utilisateur» et «mot de passe» sur le filtre de l'action? Ou Mettre à jour le modèle avec juste la liste des champs que vous souhaitez mettre à jour?
C'est parfaitement valide mais vous pouvez oublier de le faire, un nouveau développement peut ne pas savoir à ce sujet, car n'est pas si évident. Utiliser des images de vue, il est presque impossible d'échouer.
Chaque fois qu'il est possible, faites votre vue Tapée p> li>
Évitez la logique de votre point de vue P> Li>
Éloignez-vous du HttpContext P> Li> ul>
Ne laissez pas votre contrôleur devenir gros et faire trop de travail. J'ai vu plus de 1000 contrôleurs de ligne dans le passé et cela devient juste un cauchemar absolu pour comprendre ce qui se passe. P>
Utiliser le test de l'unité pour vos contrôleurs pour vous assurer que les dépendances sont conservées sous contrôle et que votre code est testable. P>
Ne soyez pas dessiné en laissant JQuery et de fantaisie Clientcript définir le comportement de votre application, essayez de l'utiliser aussi avec parcimonie que possible et de la laisser améliorer votre application. P>
Utilisez des vues partielles et des aides HTML chaque fois que cela est possible de vous assurer que vos vues ne deviennent pas lourdes et un cauchemar de maintenance. P>
Utilisez une vue de vue dans la mesure du possible. P>
Utilisez un cadre d'injection de dépendance pour gérer vos dépendances (MVCCONTRIBBIB compte plusieurs usines de contrôleur, bien que cela soit suffisamment simple pour rouler le vôtre). P>
Utilisez un contrôleur différent pour chaque section de votre site (E.G., HOME, COMPTE) P>
Apprenez à utiliser ViewData et Tempdata P>
apprendre quelle est l'utilisation de RenderPartial P>
Assurez-vous de nommer vos paramètres avec Vous perdez votre viewdata lorsque vous redirectToaction code>: p>
retour redirectToaction ("Donatetocarité", nouveau {id = 1000}); code> p> li>
RedirectToaction code> . p> li>
ul>
Mettez JavaScript dans des fichiers séparés, pas dans la page d'affichage p>
Pourquoi? Et si je dois assigner js variables dans la page de vue? I.e. ID d'article actuel, ou une URL générée? J'accepte que la plupart des fichiers JavaScript (fonctions) devraient être dans * .js, mais beaucoup de variables, de messages localisés, etc., vous pouvez générer (si possible dans une seule vue partielle qui est la section de la mise en page) dans cshtml / ascx
Une leçon que quiconque l'utilise alors devrait apprendre, ce sont quelques questions sont Wiki!
Lecture recommandée: Obtenez cette présentation sur les modèles et les anti-motifs dans ASP.NET MVC: IndomitableHef.com/?p= 225