Where you're wrong? Where to begin...
<table width="100%" cellpadding=0 cellspacing=0 > <tr> <th>Title</th> <th>Author</th> <th>Date</th> </tr> <asp:repeater id="ArticlesListing" runat="server"> <tr> <td> <%# DataBinder.Eval(Container.DataItem, "Title" ) %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "Author" ) %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "Date" ) %> </td> </tr> </asp:repeater> </table>
Ignores code-behind, and thus presentational/logical separation, nevermind business/presentational separation.
We've also been through your generalization that .NET is just a templating engine a thousand times, disproven it a thousand times, and you continue to repeat it. You're like some PHP version of Colin Powell or something.
Once again, you list addons for PHP which will allow you to do .NET things, while criticizing those same things.
Getting back to your above example, simply having the Repeater control there would allow you to enumerate (in your presentational or business logic, depending on your degrees of separation) everything to be repeated.
Perhaps an example of completely HTML, presentational, logical and business separation (nevermind modularization among all of these) is in order.
Attached is our production level client, multi-server, website tool which we're still developing. It should give you a little taste for what's possible. We haven't implemented some of the newer features, management or degrees of separation in this released code (it's v1, we're releasing 1.2 soon).
Feel free to pick apart, but you'll find it runs fast, takes nearly 0 server resources and beats all the competition. I'd suggest not distributing this, but feel free to use this original version for evaluation purposes.