Reputation: 350
Is there a way to pre-populate a MultiSelectList
with selected items?
Example:
I have a single View that has the following ListBoxFor
that will cause the page to update what it's displaying by allowing filtering of Model.Companies
.
@Html.ListBoxFor(m => m.SelectedCompanies, new MultiSelectList(Model.Companies, "IdString", "CompanyName")
What I'd like to have happen is after the update, the MultiSelectList
will have the items that were selected before the page updated and refreshed. Does that mean I need to return SelectedCompanies
with what was selected, or is there another way?
I am using the javascript library Chosen for usability of the ListBox on the client side, but I don't think that this affects what I'm trying to do.
Upvotes: 0
Views: 245
Reputation: 50728
Sometimes, JS libaries can interfere with your desired results. I can't speak for Chosen JS library, but inspect the markup and see how it renders. As long as it still has the listbox on the client (it must have some input element defined somewhere; my guess it hides it and updates the values as they are selected), then yes it should integrate fine.
However, when the controller posts back, you have to repopulate the Model.SelectedCompanies property with whatever values came back from the POST operation to the controller. The property should still have the selected companies if you return a View from the POST operation. If you are using a RedirectToAction instead, you'd have to store the selections in TempData.
Upvotes: 1