¿Cómo puedo establecer el valor seleccionado de un Html.DropDownListFor? He estado buscando en línea y he visto que se puede lograr usando el cuarto parámetro, como el siguiente:
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
Mi lista de selección se muestra así:
<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>
Pero, por alguna razón, Reino Unido permanece seleccionado, pero quiero que se seleccione "Seleccione un país".
¿Alguien sabe cómo puedo lograr esto?
EDITAR
Actualicé mi código ya que hubo un ligero cambio en la funcionalidad, sin embargo, parece que todavía tengo este problema. Esto es lo que está en mi opinión:
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
es el Id del option
que quiero seleccionar, también lo he probado con el texto del option
pero eso tampoco funciona.
¿Algunas ideas?
fuente
OrderTemplates
su intento de vincular a unaViewBag
propiedad que es typeofIEnumerabe<SelectListItem>
. Pero un<select>
elemento no se puede vincular a una colección de objetos complejos (solo un tipo de valor)Para mí no estaba funcionando, así que funcionó de esta manera:
Controlador:
Ver:
JQuery:
fuente
Cuando pasa un objeto como este:
estás diciendo: la Fuente (
Model
) y la Tecla ("Code"
) el Texto ("Name"
) y el valor seleccionado0
. Probablemente no tenga un0
valor en su fuente para laCode
propiedad, por lo que HTML Helper seleccionará el primer elemento para pasar el valor seleccionado real a este control.fuente
Asegúrese de haber recortado el valor seleccionado antes de realizar la asignación.
//Modelo
//Controlador
//Ver
fuente
Si sabe lo que habrá en la vista, también puede establecer el valor predeterminado desde Controller en lugar de configurarlo en el archivo view / cshtml. No es necesario establecer un valor predeterminado desde el lado HTML.
En el archivo Controller.
En el archivo .cshtml.
fuente
Deberías olvidar la clase
Use esto en su controlador:
Seleccione el valor:
Agregue la lista a ViewData:
Use esto en su Vista:
-
Más información en: http://www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc
fuente
Agregar la sección del controlador
Agregar la sección Html
Un método simple
fuente
Para mi solución general :)
fuente
Enlace al menú desplegable con elemento vacío, elemento seleccionado (funciona al 100%)
(muy escrito, posibilidades de error mínimo) Cualquier cambio de modelo se reflejará en la encuadernación
Controlador
Ver
Este método para vincular datos también es posible
fuente
Sé que esto no es realmente una respuesta a la pregunta, pero estaba buscando una manera de inicializar DropDownList de una lista sobre la marcha en la vista cuando seguía tropezando con esta publicación.
Mi error fue que intenté crear una lista de selección a partir de un diccionario como este:
Luego fui a indagar en el documento oficial de msdn y descubrí que
DropDownListFor
no necesariamente requiereSelectList
, sino más bienIEnumerable<SelectListItem>
:En mi caso, probablemente también pueda omitir el
Model.Locality
elemento seleccionado, ya que es a) el único elemento yb) ya lo dice en laSelectListItem.Selected
propiedad.En caso de que se lo pregunte, la fuente de datos es una página AJAX, que se carga dinámicamente mediante el control SelectWoo / Select2.
fuente
Necesita obtener uno y establecer uno diferente. El valor seleccionado no puede ser el mismo elemento que está a punto de establecer.
Yo uso el diccionario Enum para mi lista, por eso hay un par "clave", "valor".
fuente
Tuve un problema similar, estaba usando ViewBag y el nombre del elemento de la misma manera. (Error de mecanografía)
fuente
Se trata de problemas de CSS. No sé por qué @ Html.DropDownListFor en Bootstrap 4 funciona mejor. Seguramente este es un problema de diseño de clases. De todos modos, el entorno de trabajo es, si su cuadro de entrada desplegable tiene CSS Padding: #px, # px; luego desactívelo. Espero que esto funcione.
fuente