Adding your own HtmlHelper in ASP.NET MVC 3

I am new to MVC and I am trying to create my own extension method so that I can add onto the html helpers that are available in my razor views. Html.DropDownListFor() lets you create a drop down list for any propery on your model. I would like to create a helper called Html.StateDropDownListFor() that does the exact same thing, except loads the drop down with all 50 US states. This way I don’t have to create a SelectList for every single state drop down that I create. What is the easiest way to do this? Right now I have this:

How can I get my webapp’s base URL in ASP.NET MVC?

How can I quickly determine what the root URL is for my ASP.NET MVC application? I.e., if IIS is set to serve my application at http://example.com/foo/bar, then I’d like to be able to get that URL in a reliable way that doesn’t involve getting the current URL from the request and chopping it up in some fragile way that breaks if I re-route my action.