What's the difference between:

<%# Eval("OverallRating") %>

<%# Eval(LS.Biz.Review.ColumnNames.OverallRating) %>

?

Both are correct yet the second example uses a strongly typed variable to produce the "OverallRating" string.  Why do this?

In the first example, lets say you're in a hurry and forget a 'l'.  Your code now looks like:

<%# Eval("OveralRating") %>

Everything will compile just fine but you will get an error on the server later.  On the second example you will see an error at compile time.  This will allow you to fix the error very quickly.  Doesn't sound like a big deal?

Imagine that in 1 year you come back to the application and want to change the database column 'OverallRating' to 'AllRatings'.  In the first you'd have to do a replace all, which would potentially work (but how would you know for sure? Can you imagine now how you're going to have to track down each individual instance of "OverallRating"?  BLECH.), but in the second you could refactor, compile and make sure everything is in working order.  If it wasn't you'd simply see the compile time errors and be able to fix each.

One last argument.  The keystroke factor.  The second example, while longer in text, only takes me 6 keystrokes to complete.  So bam!

Oh, one more: Intellisense will also pull up a list of column names for me to choose from when I press the '.' key.  No more looking at my database to find out what columns are there.  The work's already been done for me.  Double bam!