Je veux dire, nous avons maintenant tout ce mouvement vers la séparation de votre balisage HTML de votre code autant que possible à l'aide de moteurs de modèle modernes (dans les programmeurs de l'ancienne journées, viennent généralement de conserver des cordes de concaténation dans PHP, qui était terrible.)
Ensuite, je regarde le code d'un collègue pour générer une table HTML, et on dirait: P>
<% Html.Grid(Model).Columns(column => {
column.For(x => Html.ActionLink("Edit", "Edit", new { id = x.Id })).Attributes(width => "30px").DoNotEncode();
column.For(x => Html.ActionLink("Delete", "Delete", new { id = x.Id }, new { @class = "delete" })).Attributes(width => "95px").DoNotEncode();
column.For(x => x.Id).Named("Code");
column.For(x => x.Name).Named("Name").HeaderAttributes(align => "left");
column.For(x => x.CPF).Named("CPF");
})
.Attributes(width => "100%", border => "0", cellpadding => "0", cellspacing => "0", @class => "data-table")
.Empty("No users found!")
.RowStart(row => string.Format("<tr class='row{0}'>", row.IsAlternate ? "-alternating" : ""))
.Render();
%>
4 Réponses :
Son laid de premier coup d'œil, mais je pense que c'est plutôt concis et prend soin de beaucoup de logique. Par exemple, une sortie MVC standard pour faire quelque chose près de ceci (sans balisage) et je suis sûr que j'ai manqué quelques choses là aussi. Aller traditionnel, je dois garder une trace d'un nombre d'une rangée ou un moyen de savoir s'il s'agit d'une ligne alternative ou non, avez une affaire lorsque je n'ai aucun enregistrement et généralement beaucoup de <%%> code> Tags pour gérer ces blocs de code. P> p>
Je vais accepter que ce n'est pas très joli, mais si vous commencez à définir des conventions sur la manière dont une table devrait être examinée, vous pourriez commencer à refacteur à des méthodes de vulgarisation pour nettoyer ce problème. Ensuite, il se souvient même de vos définitions de table. Voici un exemple (moins les vernies réelles).
<% Html.Grid(Model).Columns(column => {
InsertEdit(column).Width(30);
InsertDelete(column).Width(95);
column.For(x => x.Id).Named("Code");
column.For(x => x.Name).Named("Name").LeftAlignHeader();
column.For(x => x.CPF).Named("CPF");
})
.ApplyDefaultStyle()
.Class("data-table")
.Empty("No users found!")
.DefaultAlternatingStyle()
.Render();
%>
J'ai aimé vos extensions! Et je suis le collègue de Daniel.
Pour un designer, il s'agit d'un pas en arrière dans la lisibilité du code, il n'y a pas deux opinions ici. p>
d'un point de vue du développeur, cela dépendra. Certains comme ça les autres ne le font pas. Personnellement, je l'aime et préférez-le comparé au plus standard Vous commencez par un simple Conclusion: Utilisez le pistolet droit pour la bonne cible. Pour des tables simples, l'approche conventionnelle fonctionne bien, mais une fois que vous commencez à faire plus de choses avancées, utilisez des aides à utiliser. P>
Ou vous pouvez utiliser un moteur de vue d'étincelles et oublier ces ifs ;-)
@ Queen3, il faut des âges pour trouver la syntaxe correcte sans IntelliSense. Je rigole :-)
Oui, mais Spark a IntelliSense, si l'on a besoin de cela pour apprendre; Bien que, actuellement, je le modifie dans l'éditeur de VS HTML. Spark est vraiment très simple. J'ai d'abord utilisé la grille MVCContribe et les aides moi-même. Mais quand j'ai commencé à utiliser Spark, je finissais éventuellement à remplacer tous (et d'autres "Aidateurs") avec un marquage pur et pur sur le bouton HTML / Spark. Le problème est: "Une fois que vous commencez à aller plus de choses avancées", des aides (comme la grille) pause. Il est difficile de gérer des balises imbriquées complexes, des attributs conditionnels, etc. Les aides ajoutent une abstraction sur HTML et il devient finalement fuir. La grille de contributions MVC semble effrayante simplement parce qu'elle a des tonnes et des tonnes de capacités. C'est une extension HTML de classe HTML de classe suisse qui fait toutes choses pour toutes les personnes. Comme les autres notés le faisant de la main sont encore plus difficiles ou maladroits. Je me souviens de revenir sur le bureau, écrivez un code masculin tout aussi maladroit pour configurer les contrôles de la grille et de la feuille de calcul pour obtenir les bons effets. P>
Cependant, si vos besoins sont plus modestes, écrivez simplement la vôtre. Phil Haack avait un excellent article sur un Répéteur basé sur le code . Il y a aussi quelques plus claires Grid View aidateurs qui pourrait vous aider. Celles-ci sont aussi puissantes, mais pourraient être plus adaptées à certains travaux de votre application. p> foreach code> technique. Pourquoi? p>
code> et un
foreach code>. Ensuite, certains utilisateurs indiquent que vous devez gérer des styles de rangs alternés. Vous commencez par ajouter ifs code>. Ensuite, un autre utilisateur dit que vous devez pouvoir commander par colonne donnée. Vous gérez cela avec un autre ifs code>. Un troisième utilisateur vous demande de gérer la pagination => Encore un autre ifs code> et foreach code> à votre vue. Vous vous retrouvez avec spaghetti . P >
votes
Le «laid» d'un homme est la «femme» d'un autre homme. Trop subjectif et ouvert pour répondre; Cela revient simplement à la discussion, qui est explicitement découragé ici. Voter à fermer.