Menú desplegable ASP.NET MVC con una opción vacía predeterminada

Respuestas:

130

Lo siguiente antepondrá string.Empty a SelectList (o IEnumerable) especificado en el elemento ViewData ["Menú"]. La selección tendrá identificación y nombre MenuID.

<%= Html.DropDownList( "MenuID",
                      (IEnumerable<SelectListItem>)ViewData["Menu"],
                      string.Empty ) %>

Documentación: método DropDownList

tvanfosson
fuente
13
Gracias. El nombre del parámetro de optionLabel para la opción predeterminada me desconcertó :)
James Newton-King
4
Caray ... yo también estaba empezando a escribir mi propio método de ayuda ... nombre basura en mi humilde opinión - suena como si saliera una etiqueta <label> al lado.
Mr Grok
Tenga en cuenta que la clave ViewData debe ser diferente de DropDown-Id (en este ejemplo, "Menu"! = "MenuID"). De lo contrario, el marco sobrescribe el menú desplegable, ignorando el tercer parámetro.
Manuel Allenspach
¡Increíble! También solucioné mi problema con select2.js.
gkonuralp
7

Por ejemplo:

    Controller :

    private void InitScreenInfoCollate()
    {   
        IEnumerable<MstBrd> listbrd = ibrandRepository.GetItemsByUsercode("");
        ViewBag.Brands = new SelectList(listbrd, "brd_cod", "brd_mei", null);

    }

    View :
    @Html.DropDownList("Brands", null, string.Empty, new { @class = "form-control"})

Resultado:

imagen en línea

tiepnv
fuente
0

Esta sencilla solución funcionó para mi proyecto mvc5:

en vista:

@{
     Model.ModelItemsList.Add(new ModelItem{ });
     SelectList modelItemSelectList = new SelectList(Model.ModelItemsList, "ModelItemID", "ModelItemName");
}

Simplemente agregue un nuevo elemento al List<>que desea mostrar en su vista. En mi caso, agregué un "ModelItem" vacío a mi List<ModelItem> ModelItemList. Dado que mi ModelItemID es un Guid, tuve que buscar Guid.Empty en mi método de controlador y hacer algo de código. Eso es todo.

PixelPlex
fuente
-8

La solución presentada aquí funcionó muy bien para mí: http://forums.asp.net/t/1142484.aspx/1

La idea básica es que se establece la AppendDataBoundItemspropiedad de su DropDownLista truey luego poner asp:ListItemen el DropDownListy que se convertirá en su elemento por defecto con todos los elementos de enlace de datos que viene después de ella.

Cjbarth
fuente
4
-1Esto es para ASP.NET Web Forms, no MVC.
JoeBrockhaus