ValidationSummary is so simple, as pointed above it is just 2 loops (which you can do in 1 with LINQ's SelectMany) so you can make your own partial view for this and place it in master layout in 5 minutes.
And given that ValidationSummary will not display Exceptions put in ModelState, there's a good reason to do this, anyway.
If you want to have the same order as controls in your view, you can do jQuery:
var list = {};
<% foreach (var error in ModelState)
{%>
list['<%=error.Key%>'] = '<%=error.Value.Message%>';
<%}%>
$(*[name]).each(function(i,o){
isError = list.indexOf(o.name) >= 0;
if (isError)
$(".validationSummary").append("<li>" + list[o.name] + "</li>");
});
Well, this code is from my head so it's pseudo... but this is the idea. Basically you iterate over all elements with name attribute, and check ModelState for and error. To make this happen, your server-side code creates a client-side dictionary of errors.
A better one would be to write a HtmlHelper extension that basically does the same, but in C# code file so that it doesn't mess your view.