Je dois faire le point (involontairement) que je ressens dans certaines parties que je fais trop dans la vue (.aspx) lui-même, trop de formatage, de la concaténation, au même endroit une petite regrette de remplacement.
Je commençais à travailler sur une nouvelle partie et à essayer d'améliorer mon approche .. Alors ça m'a frappé pourquoi je ne faisais que faire tous mes modèles de vue (dans / Modèles / Modèles / In .Web Projet) Strings ou une liste de chaîne à une poussée. Remarque: Je ne parle pas de mon modèle / mon domaine, mais plutôt de spécifiquement ma viewModel. P> pour la soumission de formulaire (ajout d'édition) J'utilise un modèle de vue séparé pour nourrir L'action du contrôleur (modèle de formulaire si vous voulez dans / modèles / formulaire). Donc, la FinanceQuoteForme contient des doubles etc ... construites via un liant. P> Ce que tout le monde pense à cette approche? Est-ce que fait le .tostring ("c") dans la cartographie du domaine pour voir trop de modèle? p> p>
4 Réponses :
Votre modèle doit produire les données correctes, alors il appartient à la vue de produire les données dans le format requises. Si vous avez construit une autre vue sur le modèle, vous voudrez peut-être faire différentes manipulations des données, donc je suggère
Il ne parle pas du modèle de domaine - il parle du modèle de vue.
Marque. Correct. Je ne parle pas de mon modèle. Je me réfère spécifiquement à mon modèle de vue que mes actions de contrôleur génèrent (manuellement, automapper ou quoi que ce soit - petit détail implique) et envoyer au point de vue du rendu.
Je suis d'accord sur CK, voir le modèle est celui des données "format". En passant uniquement des cordes, vous perdez la chance de voir le modèle pour formater les données. Un exemple simple Je peux avoir, c'est que si vous passez une "date" comme une chaîne pour afficher le modèle, vous avez besoin d'une manipulation supplémentaire dans le contrôleur pour servir le contenu à un visiteur américain ou à un visiteur britannique.
Xandy, point intéressant, mais je pense que la localisation doit être prise en compte dans le niveau du contrôleur, soit une logique supplémentaire, soit une partie de votre code de cartographie. Comme la marque le suggère ci-dessous, vous pouvez vérifier facilement et je ne vois pas comment enregistrer votre code en poussant ceci à la vue (enfouir, vous avez probablement une duplication)
La sauvegarde du code ne doit pas être une préoccupation lors de la comparaison à la réutilisabilité des composants. Je pense que CK souligne un problème très important, c'est que vous devriez pouvoir construire une autre vue sur le même contrôleur. Prenez la date à titre d'exemple (encore une fois!), Vous avez raison que la logique de mappage et de localisation pouvait faire au niveau du contrôleur, mais que sur la date de la date de longue date et des problèmes de date de courte distance? Considérons un scénario que je n'aurais donné qu'une date courte dans la plate-forme mobile, mais la chaîne de date à longue date à la plate-forme de bureau. Faites la date à la chaîne, mettez simplement le contrôleur également impliqué dans la mise en forme.
Xandy, je vois votre point, peut-être une autre petite couche alors, dans ASP.NET MVC, un filtre d'action qui intercepte et remplace le riche viewdata.model qui a des types non formatés (Bool, Date, etc.) avec une chaîne uniquement pertinente à la plate-forme de destination particulière. De cette façon, le formatage n'est pas dans la vue, mais tout n'est pas intégré de manière difficile à tester .aspx / ascx. Je mentionne le code d'économie de code pour éviter la répétition du formatage tout au long d'une vue.
J'ai tendance à me pencher assez lourdement vers des cordes moi-même pour les modèles de vue que je concevons. Après tout, la plupart des données affichées dans la vue prennent la forme de chaînes. À tout moment, je suis sur le point d'effectuer une manipulation de données dans la vue (.aspx / .ascx), j'envisageai sérieusement pousser cette logique à mon modèle de vue afin que je puisse le tester. Après tout, la qualification est la la principale avantage em> que vous obtenez de MVC, alors pourquoi ne pas l'utiliser? P>
dans WPF (juste pour prendre un détour court) bon nombre des contrôles comprennent de manière native d'autres types de données (tels que des nombres, des booléens, etc.), mais sur une plate-forme si intrinsèquement liée sur des chaînes comme HTML, il fait un beaucoup de sens pour moi de traiter la majeure partie de la sortie en tant que texte. P>
Toutes les données doivent être tournées entre serveur et navigateur codées comme des chaînes de toute façon, si souvent, vous seriez simplement explicite à ce sujet. P>
Je ne pense vraiment pas que ce soit trop - je pense seulement que vous pouvez le faire trop peu :) p>
"Chaque fois que je suis sur le point d'effectuer une manipulation de données dans la vue (.aspx / .ascx), j'envisageai sérieusement pousser cette logique sur mon modèle de vue afin que je puisse le tester." Pouvez-vous s'il vous plaît élaborer sur cette partie? J'allais avoir parcouru un point de vue séparé pour l'édition, mais je suis intéressé par votre approche
Je pense que nous parlons de la même chose, mais que je me suis peut-être exprimé moins que sincéremment clair. Avec la manipulation de données, je pensais simplement à de petites choses telles que la mise en forme de la monnaie, la concaténation de la chaîne, etc. - vous savez: manipuler les données sur son chemin vers le flux de sortie. Avoir un modèle d'affichage pour l'affichage et un autre pour éditer des sons très raisonnables pour moi. Dans le monde apatride de HTTP, on est émis lorsque l'autre est entrée. Ce sont des choses très différentes et ne doivent pas être confondues. Les modéliser comme différents captures qui distinguent très clairement.
Vos coutures de situation doivent être très spéciales et limitées d'une manière: votre point de vue est destiné à éditer ou à afficher. La plupart des vues font les deux: ils ont beaucoup de choses d'affichage ans quelques trucs d'édition. Disons cette page: p>
Question d'affichage, réponses et notes. EDIT: Réponse. P>
Je ne voudrais pas distinguer le 2. Cela se terminerait par une duplication de nombreux champs d'affichage. P>
Je préférerais avoir une vue avec éventuellement 2 propriétés: une pour affichage et une pour la valeur de formulaire. P>
D'accord, surtout. Pour les formulaires de montage traditionnels, je préfère avoir des modèles distincts pour le «modèle post» (transmis au contrôleur) et pour la vue / modifier le modèle de vue »(transmis à la vue). p>
Les propriétés post-modèle sont toutes des cordes. Cela me permet de déterminer si un champ était inclus dans le poste, d'autres ne le sont pas, c'est très important pour mon application. P>
Le modèle de poste alimente mon action de contrôleur qui détermine ensuite quelle (s) commande (s) à exécuter, le cas échéant. p>
à partir de là, si l'action du contrôleur permet de visualiser la page Affichage / Modifier, puis je construis le modèle de vue en conséquence et l'apporte à la vue. p>
Par conséquent, je peux faire mes propriétés de mon modèle de vue quels que soient les types que je veux. Ils ne doivent pas correspondre aux types de poste du modèle. P>
Super propre, et me donne un contrôle total sur tout. P>