6
votes

Utilise quelque chose comme la grille MVCCONTRIB un pas en arrière dans la lisibilité du code?

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();
%>


1 commentaires

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.


4 Réponses :


1
votes

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) xxx

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 <%%> Tags pour gérer ces blocs de code.


0 commentaires

1
votes

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();
%>


1 commentaires

J'ai aimé vos extensions! Et je suis le collègue de Daniel.



5
votes

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.

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 foreach technique. Pourquoi?

Vous commencez par un simple

et un foreach . Ensuite, certains utilisateurs indiquent que vous devez gérer des styles de rangs alternés. Vous commencez par ajouter ifs . Ensuite, un autre utilisateur dit que vous devez pouvoir commander par colonne donnée. Vous gérez cela avec un autre ifs . Un troisième utilisateur vous demande de gérer la pagination => Encore un autre ifs et foreach à votre vue. Vous vous retrouvez avec spaghetti .

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.


3 commentaires

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.



2
votes

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.

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.


0 commentaires