# c# – How to write a simple Html.DropDownListFor()?

## The Question :

136 people think this question is useful

In ASP.NET MVC 2, I’d like to write a very simple dropdown list which gives static options. For example I’d like to provide choices between “Red”, “Blue”, and “Green”.

189 people think this answer is useful

Let’s say that you have the following Linq/POCO class:

public class Color
{
public int ColorId { get; set; }
public string Name { get; set; }
}



And let’s say that you have the following model:

public class PageModel
{
public int MyColorId { get; set; }
}



And, finally, let’s say that you have the following list of colors. They could come from a Linq query, from a static list, etc.:

public static IEnumerable<Color> Colors = new List<Color> {
new Color {
ColorId = 1,
Name = "Red"
},
new Color {
ColorId = 2,
Name = "Blue"
}
};



In your view, you can create a drop down list like so:

<%= Html.DropDownListFor(n => n.MyColorId,
new SelectList(Colors, "ColorId", "Name")) %>



64 people think this answer is useful
<%:
Html.DropDownListFor(
model => model.Color,
new SelectList(
new List<Object>{
new { value = 0 , text = "Red"  },
new { value = 1 , text = "Blue" },
new { value = 2 , text = "Green"}
},
"value",
"text",
Model.Color
)
)
%>



or you can write no classes, put something like this directly to the view.

37 people think this answer is useful

Avoid of lot of fat fingering by starting with a Dictionary in the Model

namespace EzPL8.Models
{
public class MyEggs
{
public Dictionary<int, string> Egg { get; set; }

public MyEggs()
{
Egg = new Dictionary<int, string>()
{
{ 0, "No Preference"},
{ 1, "I hate eggs"},
{ 2, "Over Easy"},
{ 3, "Sunny Side Up"},
{ 4, "Scrambled"},
{ 5, "Hard Boiled"},
{ 6, "Eggs Benedict"}
};

}

}



In the View convert it to a list for display

@Html.DropDownListFor(m => m.Egg.Keys,
new SelectList(
Model.Egg,
"Key",
"Value"))



32 people think this answer is useful

Hi here is how i did it in one Project :

     @Html.DropDownListFor(model => model.MyOption,
new List<SelectListItem> {
new SelectListItem { Value = "0" , Text = "Option A" },
new SelectListItem { Value = "1" , Text = "Option B" },
new SelectListItem { Value = "2" , Text = "Option C" }
},
new { @class="myselect"})



I hope it helps Somebody. Thanks

13 people think this answer is useful

Or if it’s from a database context you can use

@Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }))



7 people think this answer is useful

@Html.DropDownListFor(model => model.ContentManagement_Send_Section,
new List<SelectListItem> { new SelectListItem { Value = "0", Text = "Plese Select one Item" } }
.Concat(db.NameOfPaperSections.Select(x => new SelectListItem { Text = x.NameOfPaperSection, Value = x.PaperSectionID.ToString() })),
new { @class = "myselect" })



Derived from the codes: Master Programmer && Joel Wahlund ;
King Reference : https://stackoverflow.com/a/1528193/1395101 JaredPar ;

Thanks Master Programmer && Joel Wahlund && JaredPar ;

Good luck friends.

3 people think this answer is useful
@using (Html.BeginForm()) {
<p>Do you like pizza?
@Html.DropDownListFor(x => x.likesPizza, new[] {
new SelectListItem() {Text = "Yes", Value = bool.TrueString},
new SelectListItem() {Text = "No", Value = bool.FalseString}
}, "Choose an option")
</p>
<input type = "submit" value = "Submit my answer" />
}



I think this answer is similar to Berat’s, in that you put all the code for your DropDownList directly in the view. But I think this is an efficient way of creating a y/n (boolean) drop down list, so I wanted to share it.

Some notes for beginners:

• Don’t worry about what ‘x’ is called – it is created here, for the first time, and doesn’t link to anything else anywhere else in the MVC app, so you can call it what you want – ‘x’, ‘model’, ‘m’ etc.
• The placeholder that users will see in the dropdown list is “Choose an option”, so you can change this if you want.
• There’s a bit of text preceding the drop down which says “Do you like pizza?”
• This should be complete text for a form, including a submit button, I think

Hope this helps someone,