Populating ASP.NET MVC DropDownList

leebrandt picture leebrandt · Aug 19, 2009 · Viewed 69.9k times · Source

OK, I've been Googling for hours and trying everything and can't get anything to work. I am learning MVC using Sharp Architecture and have generated some basic forms for creating Client objects. I want to fill the state drop down list with a list of US states and let the user pick from that list. I am able to populate the list and get the value back (to save the client) but when I go to edit the client, the client's current state is not selected. I have set the selected value in the SelectList:

<li>
    <label for="Client_StateProvince">StateProvince:</label>
    <div>
        <%= Html.DropDownListFor(c=>c.Client.StateProvince, new SelectList(Model.StateProvinces, "id", "Name", Model.Client.StateProvince), "-- Select State --")%>
    </div>
    <%= Html.ValidationMessage("Client.StateProvince")%>
</li>

This does not seem to be good enough. What am I missing?

Answer

leebrandt picture leebrandt · Aug 19, 2009
<%= Html.DropDownListFor(c => c.Client.StateProvince.Id, 
                              new SelectList(Model.StateProvinces, 
                                             "id", 
                                             "Name", 
                                             Model.Client.StateProvince), 
                              "-- Select State --")%>

This does it.

Hope this helps someone else.

~Lee