MvcContrib.FluentHtml provides a library of HTML helper methods that use expressions with strongly typed views to generate HTML elements. Not too long after that MS MVC beta introduced HtmlHelper<T> which allows users to create extension methods that use expressions in the same way. The benefits are obvious. By trading magic strings for expressions we gain compile time checking, better refactoring, etc.
<%=this.TextBox(x => x.User.FirstName)%>
<input type="text" name="User.FirstName" id="User_FirstName" value="Joe"/>
Doh! We just can’t escape those magic strings. Or can we? How about this?
$('#<%=this.IdFor(x => x.User.FirstName)%>').change(doSomething);
I owe credit to Jimmy Bogard for planting this idea in my mind in one of his tweets.