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")%>
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With