¿Hay alguna forma de incluir una opción vacía predeterminada (o con texto) si no hay un valor seleccionado para una lista desplegable?
¿Hay alguna forma de incluir una opción vacía predeterminada (o con texto) si no hay un valor seleccionado para una lista desplegable?
Respuestas:
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
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:
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.
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 AppendDataBoundItems
propiedad de su DropDownList
a true
y luego poner asp:ListItem
en el DropDownList
y que se convertirá en su elemento por defecto con todos los elementos de enlace de datos que viene después de ella.
-1
Esto es para ASP.NET Web Forms, no MVC.