Básicamente, estoy buscando insertar un elemento al comienzo de una lista de selección con el valor predeterminado de 0 y el valor de texto de "- Seleccionar uno -"
Algo como
SelectList list = new SelectList(repository.func.ToList());
ListItem li = new ListItem(value, value);
list.items.add(li);
Se puede hacer esto?
asp.net-mvc
selectlist
GEOCHET
fuente
fuente
SelectList
realmente parece ser solo una ayuda para vincular datos directamente a los elementos. Si agrega elementos manualmente, utiliceList<SelectListItem>
en su lugar.Respuestas:
Realmente no es necesario hacer esto a menos que insista en el valor de 0. La extensión HtmlHelper DropDownList le permite establecer una etiqueta de opción que aparece como el valor inicial en la selección con un valor nulo. Simplemente use una de las firmas DropDownList que tiene la etiqueta de opción.
fuente
@Html.DropDownListFor( m => m.MenuSelection, (IEnumerable<SelectListItem>)ViewBag.Menu, "Select One", null )
por ejemplo, incluyendo el nulohtmlAttributes
para evitar confusión con la firma que toma una expresión, la enumeración del menú y un objeto (htmlAttributes).dataValueField
y eldataTestField
que hizo que esto no funcionara al agregar un valor optionLabel. Probablemente podría haber funcionado con un poco más de esfuerzo, pero solo utilicé una de las soluciones alternativas. ¡Gracias de todos modos!Logré que esto funcionara rellenando un SelectListItem, convirtiéndolo en una lista y agregando un valor en el índice 0.
fuente
Esto es posible.
fuente
Me gustó la respuesta de @ AshOoO, pero al igual que @Rajan Rawal, necesitaba preservar el estado del elemento seleccionado, si corresponde. Así que agregué mi personalización a su método.
AddFirstItem()
fuente
Esto debería hacer lo que necesita, simplemente envíe su lista de selección y devolverá una lista de selección con un elemento en el índice 0
Puede personalizar el texto, el valor o incluso el índice del elemento que necesita insertar
fuente
Aquí el ayudante HTML para ti
fuente
El método .ToList (). Insert (..) coloca un elemento en su Lista. Se puede especificar cualquier posición. Después de ToList, simplemente agregue .Insert (0, "- - Primer elemento - -")
Tu codigo
Nuevo código
fuente
Puede que no suene muy elegante, pero suelo hacer algo como esto:
fuente
De acuerdo, me gusta el código limpio, así que hice de este un método de extensión
Uso (por ejemplo):
fuente
Como esta opción puede necesitar de muchas maneras diferentes, llegué a la conclusión de desarrollar un objeto para que pueda ser utilizado en diferentes escenarios y en proyectos futuros.
primero agregue esta clase a su proyecto
Ahora en Acción del controlador puedes hacer esto
Y finalmente en Ver codificarás así.
fuente
Una solución alternativa es usar la respuesta de @ tvanfosson (la respuesta seleccionada) y usar JQuery (o Javascript) para establecer el valor de la opción en 0:
Espero que esto ayude.
fuente
Pruebe algo como el siguiente código:
fuente
No lo sé si alguien más tiene una mejor opción ...
fuente