views:

256

answers:

1

Hi

I have the following code but it never selects the value I want.

     List<SelectListItem> list = new List<SelectListItem>();
     SelectListItem one = new SelectListItem() { Text = "MyTest", Value = "MyTest"};
     SelectListItem two= new SelectListItem() { Text = "Test2", Value = "Test2" };

     if (id == "MyTest")
     {
         one .Selected = true;
     }
     else
     {
         two.Selected = true;
     }
     list.Add(one);
     list.Add(two);
     ViewData["DDL"] = new SelectList(list, "value", "text");

So I am not sure what I am doing wrong

in my view I have

<%= Html.DropDownList("DDL") %>
+3  A: 

You should use:

ViewData["DDL"] = new SelectList(list, "value", "text", id == "MyTest" ? "MyTest" : "Test2");

You should define selected value in SelectList constructor.

EDIT

Answer to question:

You don't have to provide List to SelectList constructor. It can be collection of any object. You just have to provide key, value propery and selected value. Your code could also look like:

var selectItems = new Dictionary<string, string> {{"MyTest", "MyTest"}, {"Test2", "Test2"}};
ViewData["DDL"] = new SelectList(selectItems, "Key", "Value", id == "MyTest" ? "MyTest" : "Test2");
LukLed
Then what is the point of the one in SelectListItem?
chobo2