I mean, now we have all this movement towards separating your html markup from your code as much as possible using modern template engines (in the old days programmers usually just kept concatenating strings in php, which was terrible.)
Then I look at a co-worker's code for generating an html table, and it looks like:
<% 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();
%>
He thinks it's awesome, I think it's quite ugly, so I'd like to know more people's opinion.
For a designer it's a step backwards in code readability, there are no two opinions here.
From a developer standpoint it will depend. Some like it others don't. Personally I like it and prefer it compared to the more standard foreach
technique. Why?
You start with a simple <table>
and a foreach
. Then some user says that you need to handle alternating row styles. You start by adding ifs
. Then another user says that you need to be able to order by given column. You handle this with yet another ifs
. A third user asks you to handle paging => yet another ifs
and foreach
in your view. You end up with spaghetti.
Conclusion: use the right gun for the right target. For simple tables the conventional approach works nicely, but once you start doing more advanced stuff use helpers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With