Am I right to think that there is no way to set the selected value in the C# class SelectList after it is created? Isn't that a bit silly?
SelectList(IEnumerable) Initializes a new instance of the SelectList class by using the specified items for the list. SelectList(IEnumerable, Object) Initializes a new instance of the SelectList class by using the specified items for the list and a selected value. SelectList(IEnumerable, Object, IEnumerable)
Cause SelectedValue will give you the value stored for current selected item in your dropdown and SelectedItem. Value will be Value of the currently selected item.
I think you are fighting the framework. The data going into your views should be created at the Last Possible Minute (LPM).
Thinking this way, a SelectList
is a type to feed the DropDownList
HTML helper. It is NOT a place to store data while you decide how to process it.
A better solution would be to retrieve your data into a List<T>
and then initialize the SelectList
(s) when you need to. An immediate benefit of this practice is that it allows you to reuse your List<T>
for more than one DropDownList
, such as:
Country of birth Country of residence
These SelectLists
all use the Countries list of type List<Country>
.
You can use your List<T>
at the 'last minute' like in this example:
public class TaxCheatsFormViewModel { private List<Country> countries { get; set; } public TaxCheat Cheat { get; private set; } public SelectList CountryOfBirth { get; private set; } public SelectList CountryOfResidence { get; private set; } public SelectList CountryOfDomicile { get; private set; } public TaxCheatsFormViewModel(TaxCheat baddie) { TaxCheat = baddie; countries = TaxCheatRepository.GetList<Country>(); CountryOfBirth = new SelectList(countries, baddie.COB); CountryOfResidence = new SelectList(countries, baddie.COR); CountryOfDomicile = new SelectList(countries, baddie.COD); } }
The point being that you should keep your data in a List<T>
till you really need to output it; the last possible minute (LPM).
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