Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set Selected Item in SelectList Collection

I have a class with the following property. It constructs a SelectList object from an existing list, and then sets the selected item.

public SelectList ProviderTypeList
{
    get
    {
        SelectList list = new SelectList([...my collection...], "Value", "Key");
        SelectListItem item = list.FirstOrDefault(sli => sli.Text == SelectedProviderType);
        if (item != null)
           item.Selected = true;
       return list;
    }
}

However, when this code is finished, item.Selected is true. But the corresponding item in the SelectList collection is still null.

I can't seem to find a way to update the object in the collection, so that the setting will be used in the resulting HTML.

I'm using @Html.DropDownListFor to render the HTML. But I can see that the object within the collection was not modified as soon as this code has executed.

Can anyone see what I'm missing?

like image 568
Jonathan Wood Avatar asked Dec 04 '22 11:12

Jonathan Wood


2 Answers

There is an optional additional parameter in SelectList

SelectList list = new SelectList([...my collection...], "Value", "Key", SelectedID);

Check the definition

public SelectList(IEnumerable items, string dataValueField, string dataTextField, 
object selectedValue);

which sets the selected value and is of the same type as the dataValueField

like image 148
Peter Smith Avatar answered Dec 22 '22 23:12

Peter Smith


I have a list of items called id_waers.

var id_waers = db.MONEDAs.Where(m => m.ACTIVO == true).ToList();

where the id is "WAERS".

I will create a SelectList with id_waers values, "WAERS" as id and the text to show will be the id too and show the "USD" value as selected

ViewBag.MONEDA = new SelectList(id_waers, "WAERS", dataTextField: "WAERS", selectedValue: "USD");

default value

I have another options

like image 43
Matías Gallegos Avatar answered Dec 23 '22 01:12

Matías Gallegos