views:

438

answers:

2

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 dispaly.

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. Srsly, why is it so difficult to create a dropdown list with selected values using this framework? Am I missing something?

States of Practice:
<%= Html.ListBox("StatesOfPractice", Model.StatesOfPracticeList)%>
<%= 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, "Code", "Description", List);

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.

A: 

I believe that it pulls the selected items from the model, not from the list of items. Make sure that your StatesOfPractice model property is populated with the items that you want selected. That is, the StatesOfPracticeList model property provides the set of items used to populate the list. The model property StatesOfPractice which will be the set of selected property values when the form is posted, should also contain the default selected values when the view is rendered. Under the hood it uses the HtmlHelper GetModelStateValue method to find the selected value(s) for any select list. I presume this is done so that it is simpler to maintain the selected values when there is a validation error and the form is rerendered with the model state errors.

tvanfosson
Moved comment - see edits to post
+2  A: 

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.

tvanfosson - thanks for the help and the quick response. greatly appreciated!