+5  A: 

Those are compiler-generated classes that handle closures. They're not unique to ASP.NET MVC.

This class will cause the compiler to generate one of these classes:

public class Foo
{
  private bool _bar = true;

  public Func<bool> HelloClosure()
  {
    return () => _bar;
  }
}

When someone outside of Foo calls HelloClosure, they get back a function that has a link back to that particular Foo instance. Imagine we don't execute that function immediately and the GC comes along and collects Foo. Now what happens when we execute the function?

var fooInstance = new Foo();
var func = fooInstance.HelloClosure();
fooInstance = null;
GC.Collect();
// assuming fooInstance is collected
var result = func.Invoke();

These automatically-generated classes manage these dependencies between functions and instances so that we don't get into a situation like this.

Will
Sneaky! Thanks for a good explanation. :)
Kjensen