Very helpful. Note in some scenarios, such as binding failures and bad requests, there will be ModelState entries with empty string for Value.ErrorMessage and instead a Value.Exception.Message
–
AaronLSSep 16 '14 at 1:12

Yes! I (you, anyone) needs "using System.Linq;" in the top. Otherwise you got the message 'Values does not contain a definition for Select many'. It was missing in my case.
–
EstevezNov 19 '14 at 15:30

As I discovered having followed the advice in the answers given so far, you can get exceptions occuring without error messages being set, so to catch all problems you really need to get both the ErrorMessage and the Exception.

why would you want a string with all the errors in it? doesn't make sense when you want to do something with it in the view, an array of list is way better imho
–
Daniël TulpOct 22 '13 at 8:07

To debug. My first problem was to find out what was going wrong with my app. I wasn't trying to tell the user just find out what was going wrong. Besides it's trivial to convert that example from creating an enumeration of strings to an enumeration of something else, e.g. error message and exception so the really useful thing is knowing that you need both bits of information
–
Alan MacdonaldOct 22 '13 at 17:40

BTW you did realise the second extension method returns IEnumerable<String> and not just a big single string?
–
Alan MacdonaldOct 22 '13 at 17:52