The Html helper stuff (can't call it a class since it is mostly extension methods...
) seems to have two modes. In the first mode, you use it like this:
<%= Html.ReturnSomething(stuff) %>
In the other mode, you use it like this:
<% Html.WriteSomething(stuff) %>
or like this:
<% using (Html.StartSomething(stuff)) %>morestuff<% } %>
This has been a source of confusion to myself, and it appears to be confusing to others as well.
My gut feeling is that the two types of usage should be in two different categories using two different "keywords". I'm not great with keywords, but maybe the methods that return a string should be invoked via "Tag", i.e. Tag.SubmitButton(). Or perhaps the methods that directly write something should change to use a different keyword like "Render", i.e. Render.Form(...).