DropDownList en MVC 4 con Razor

DropDownList crear una DropDownList en una vista de maquinilla de afeitar.

¿Alguien me ayudaría con esto?

Código HTML5 normal:

  Exemplo1 Exemplo2 Exemplo3  

Intenté esto:

 @{ var listItems = new List { new ListItem { Text = "Exemplo1", Value = "Exemplo1" }, new ListItem { Text = "Exemplo2", Value = "Exemplo2" }, new ListItem { Text = "Exemplo3", Value = "Exemplo3" } }; } @Html.DropDownListFor(model => model.tipo, new SelectList(listItems), "-- Select Status --" ) 

 @{ List listItems= new List(); listItems.Add(new SelectListItem { Text = "Exemplo1", Value = "Exemplo1" }); listItems.Add(new SelectListItem { Text = "Exemplo2", Value = "Exemplo2", Selected = true }); listItems.Add(new SelectListItem { Text = "Exemplo3", Value = "Exemplo3" }); } @Html.DropDownListFor(model => model.tipo, listItems, "-- Select Status --") 
 @{var listItems = new List { new ListItem { Text = "Exemplo1", Value="Exemplo1" }, new ListItem { Text = "Exemplo2", Value="Exemplo2" }, new ListItem { Text = "Exemplo3", Value="Exemplo3" } }; } @Html.DropDownList("Exemplo",new SelectList(listItems,"Value","Text")) 

Puedes usar esto:

 @Html.DropDownListFor(x => x.Tipo, new List { new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"}, new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"}, new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"} }) 

// ViewModel

 public class RegisterViewModel { public RegisterViewModel() { ActionsList = new List(); } public IEnumerable ActionsList { get; set; } public string StudentGrade { get; set; } } 

// clase Enum:

 public enum GradeTypes { A, B, C, D, E, F, G, H } 

// Acción del controlador

  public ActionResult Student() { RegisterViewModel vm = new RegisterViewModel(); IEnumerable actionTypes = Enum.GetValues(typeof(GradeTypes)) .Cast(); vm.ActionsList = from action in actionTypes select new SelectListItem { Text = action.ToString(), Value = action.ToString() }; return View(vm); } 

// ver acción

  
@Html.DropDownListFor(model => model.StudentGrade, Model.ActionsList, new { @class = "form-control" })

Aquí está la respuesta más fácil:

en su opinión solo agregue:

 @Html.DropDownListFor(model => model.tipo, new SelectList(new[]{"Exemplo1", "Exemplo2", "Exemplo3"})) 

O en su controlador, agregue:

 var exemploList= new SelectList(new[] { "Exemplo1:", "Exemplo2", "Exemplo3" }); ViewBag.ExemploList = exemploList; 

y su vista solo agrega:

 @Html.DropDownListFor(model => model.tipo, (SelectList)ViewBag.ExemploList ) 

Aprendí esto con Jess Chadwick

Usar una matriz sería un poco más eficiente que crear una lista.

 @Html.DropDownListFor(x => x.Tipo, new SelectListItem[]{ new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"}, new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"}, new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"}}) 
 @{ List listItems= new List(); listItems.Add(new SelectListItem { Text = "One", Value = "1" }); listItems.Add(new SelectListItem { Text = "Two", Value = "2", }); listItems.Add(new SelectListItem { Text = "Three", Value = "3" }); listItems.Add(new SelectListItem { Text = "Four", Value = "4" }); listItems.Add(new SelectListItem { Text = "Five", Value = "5" }); } @Html.DropDownList("DDlDemo",new SelectList(listItems,"Value","Text")) 

Consulte: – Crear lista desplegable en el ejemplo de razor MVC 4

Créame, he intentado muchas opciones para hacer eso y tengo una respuesta aquí

pero siempre busco las mejores prácticas y la mejor forma que conozco hasta ahora para los desarrolladores de aplicaciones for loop y para el back-end es for loop (sí, no estoy bromeando)

Porque cuando el front-end te da las páginas de UI con datos ficticios, también agregó clases y algunos estilos en línea en la opción de selección específica, por lo que es hard to deal con el uso de HtmlHelper

Mira esto:

  

esto desde el desarrollador front-end, así que la mejor solución es usar el bucle for

Fristly create u get your list de datos de (…) en la acción del controlador y ponerlo en ViewModel, ViewBag o lo que sea

 //This returns object that contain Items and TotalCount ViewBag.MembershipList = await _membershipAppService.GetAllMemberships(); 

En segundo lugar en la vista, haz esto simple para que el bucle llene la lista desplegable

  

de esta manera no romperá UI Design, y es simple, fácil y más legible

Espero que esto te ayude incluso si no usaste una afeitadora

solo use esto

 public ActionResult LoadCountries() { List li = new List(); li.Add(new SelectListItem { Text = "Select", Value = "0" }); li.Add(new SelectListItem { Text = "India", Value = "1" }); li.Add(new SelectListItem { Text = "Srilanka", Value = "2" }); li.Add(new SelectListItem { Text = "China", Value = "3" }); li.Add(new SelectListItem { Text = "Austrila", Value = "4" }); li.Add(new SelectListItem { Text = "USA", Value = "5" }); li.Add(new SelectListItem { Text = "UK", Value = "6" }); ViewData["country"] = li; return View(); } 

y en View use following.

  @Html.DropDownList("Country", ViewData["country"] as List) 

si desea obtener datos del Dataset y completar estos datos en un cuadro de lista, utilice el siguiente código.

 List li= new List(); for (int rows = 0; rows <= ds.Tables[0].Rows.Count - 1; rows++) { li.Add(new SelectListItem { Text = ds.Tables[0].Rows[rows][1].ToString(), Value = ds.Tables[0].Rows[rows][0].ToString() }); } ViewData["FeedBack"] = li; return View(); 

y a la vista escriba el siguiente código.

 @Html.DropDownList("FeedBack", ViewData["FeedBack"] as List) 

Si está utilizando ASP.net 5 (MVC 6) o posterior, puede usar los nuevos Tag Helpers para obtener una syntax muy buena:

  
 List status = new List(); status = psobj.getstatus(); model.statuslist = status; model.statusid = status.Select(x => new SelectListItem { Value = x.StatusId.ToString(), Text = x.StatusName }); @Html.DropDownListFor(m => m.status_id, Model.statusid, "Select", new { @class = "form-control input-xlarge required", @type = "text", @autocomplete = "off" })