Background: I have 4 dropdown lists on my page that all use one List of SelectListItem
to pull data from. All 4 of these dropdowns will always
2 years ago but for anyone who finds this like I did looking for answers Feussy's comment above is the way to go. I'll try to explain why and what I found.
Using the OP example above. A couple conditions must be met in order to see the described behavior.
Put a breakpoint at @Html.DropDownListFor(x => x.SelectedItem1, Model.PossibleItems)
If you look in Model.PossibleItems you will see the list as expected. Let the code continue to the next line. Now if you look at Model.PossibleItems you will see that Html.DropDownListFor has modified your selectlist on the Model rather than just using it! The option for x.SelectedItem1 now has a 'selected' attribute not only in the HTML that goes to the client but in your model as well! This seems like bad behavior on Html.DropDownListFor but it definitely does it.
Now when you hit @Html.DropDownListFor(x => x.SelectedItem2, Model.PossibleItems)
Feussy's answer works because instead of having one selectList on the model that gets reused it is creating separate selectLists that are generated from some List/IEnumerable on the model that gets reused instead.
So the moral of the story is don't reuse a selectList with nullable values because Html.DropDownListFor has no problems altering the thing and won't clear out any selected attributes if the value is NULL.
Hope that was clear.