3

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") %>
2
  • 1
    I think you need Html.DropDownList("DDL", ViewData["DDL"]), but I'm not sure since I've never used that. Commented Nov 22, 2009 at 19:50
  • I'm not sure, but you may want to add the items to the select list before you determine which on is selected. Commented Nov 22, 2009 at 19:54

1 Answer 1

7

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");
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.