Lista desplegable de MVC3 para
Frecuentes
Visto 2,929 veces
4
Me gustaría hacer una lista desplegable, con los números 0-10. Para que los usuarios puedan calificar algo. Por el momento, tengo una etiqueta: @Html.LabelFor(model=> model.RATE) ¿Cómo puedo modificar este código que tendré un cuadro desplegable? Y que el valor del cuadro desplegable se almacenará en model.RATE?
La etiqueta está funcionando, pero sería mucho mejor tener un menú desplegable.
SOLUCIÓN:
@Html.DropDownListFor(model => model.RATE, Enumerable.Range(0,11).Select( x => new SelectListItem { Text = x.ToString() }));
3 Respuestas
4
Solo crea una lista de SelectListItem
objetos que contienen las calificaciones y, a continuación, utilice Html.DropDownListFor
con la calificación almacenada en su modelo (Model.RATE
).
@{
var ratings = new List<SelectListItem>();
for( var i = 0; i <= 10; i++ ) {
days.Add( new SelectListItem { Text = i.ToString(), Value = i.ToString(), Selected = Model.RATE == i } );
}
}
@Html.DropDownListFor( x => x.RATE, ratings )
contestado el 22 de mayo de 12 a las 21:05
4
@Html.DropDownListFor(model => model.RATE, new SelectList(Enumerable.Range(0, 11)))
Esto hará el enlace de datos al formulario y desde el formulario.
contestado el 22 de mayo de 12 a las 21:05
1
@Html.DropDownListFor(m => m.RATE, Model.RateSelectList, "<- Select Option ->")
Model.RateSelectList sería de tipo IEnumerable , m.RATE sería su propiedad de entero anulable (¿int?). El tercer parámetro sería el texto predeterminado que se mostraría si m.RATE es nulo.
contestado el 22 de mayo de 12 a las 21:05
No tenía idea de cómo establecer un valor predeterminado hasta que encontré esto. Gracias. - BrianLegg
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# asp.net-mvc asp.net-mvc-3 razor html.dropdownlistfor or haz tu propia pregunta.
0-10 tiene 11 elementos. Entonces Enumerable.Rango (0,11). - DMulligan
Esto no funciona para mí ... no puedes asignar un
Enumerable<int>
a unaEnumerable<SelectListItem>
. - ethan marrónPodrías usar
Enumerable.Range(0,11).Select( x => new SelectListItem { Text = x.ToString() } )
- ethan marróneso es cierto, pero SelectList tiene un constructor solo para un Enumerable, por lo que puede usar el constructor para que lo haga por usted. - Blast_dan
Gracias, esto me funciona: @Html.DropDownListFor(modelo => modelo.TARIFA, Enumerable.Range(0,11).Select( x => new SelectListItem { Text = x.ToString() })); - 1408786usuario