.NET MVC MultiSelectList and selected values

jamesamuir picture jamesamuir · Mar 3, 2010 · Viewed 9.8k times · Source

I am trying to set the selected values for a MultiSelectList but the page does not display any values as selected. I have tried every practical way to do this and still get the same results. I am currently trying to pass a list of selected objects in via the constructor. What gets me is that when I inspect MultiSelectList object, the selectedvalues property contains the items that I have passed into it using the constructor but it still does not display.

I have noticed that many people are having the same problem but I have not seen an answer that has worked for me. I have tried iterating through the list and setting the selected property to true, I have tried creating the multiselectlist from scratch and setting each individual items selected property and I have tried using the constructor. None of these have worked. I also found an a suggestion that the MultiSelectList property could not be named the same as the control (which I tried) and that did not work. Why is it so difficult to create a dropdown list with selected values using this framework? Am I missing something?

<label for="StatesOfPractice">States of Practice:</label>
                    <br />
                    <%= Html.ListBox("StatesOfPractice", Model.StatesOfPracticeList)%>
                    <br />
                    <%= Html.ValidationMessage("StatesOfPractice")%>

Edit 1

It appears to be happening when I instantiate the MultiSelectList. If I inspect the object in the View and open the Results View I can see that "Alaska" is not selected when I know that it should be.

http://imgur.com/eTIdH.jpg

I am instantiating like this.

new MultiSelectList(List<GenericDataContract>, "Code", "Description", List<GenericDataContract>);

The GenericDataContract is simply a class with two properties, Code and Description. The first List is all of the states, the second List is my selected states.

Answer

jamesamuir picture jamesamuir · Mar 3, 2010

Grrrrrr, I found it. Apparently, the selected items can only be a list of strings. Once I modified my code to pass this in it selected the values.