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:
public static class ExtensionMethods
{
public static MvcHtmlString StateDropDownList(this HtmlHelper html)
{
// ???
}
}
Am I even close? I don't want to rebuild a whole text box helper, I just want to create a helper that utilizes the existing text box helper but does the SelectList for me. That way in my views I could just do Html.StateDropDownList(x => x.State)
Best Answer
To use the custom helper method in your Razor views you will need to bring it into scope. There are two possible ways to do this:
@using SomeNamespace
in the top of your view with the namespace where the static class containing the helper is definedIn
~/Views/web.config
, add:Once the custom helper is brought into scope in the view, Intellisense should be able to pick it and you could use it:
Now you helper method needs to do something useful. You could either call existing helpers:
or return some custom data:
If you have a strongly typed view and you wanted to use an expression:
and then: