2011-06-07 20 views
7

Soy nuevo en MVC3. Me gustaría crear una lista de selección/menú desplegable que me permita seleccionar entre 2 y 3 elementos. Solo quiero poder seleccionar el de una lista. ¿Hay una manera fácil de hacer esto con un ayudante?¿Puedo crear una lista de selección con un ayudante MVC3?

Mary Jean

Aquí está mi idea.

The helper will select from choices: 

1 answer 
2 answers 
3 answers 

y almacenar el resultado en la variable task_type

Respuesta

14

podría utilizar el ayudante DropDownListFor. Me gustaría empezar por definir una vista de modelo:

public class AnswersViewModel 
{ 
    public string SelectedAnswer { get; set; } 

    public IEnumerable<SelectListItem> Answers 
    { 
     get 
     { 
      return new[] 
      { 
       new SelectListItem { Value = "1", Text = "1 answer" }, 
       new SelectListItem { Value = "2", Text = "2 answers" }, 
       new SelectListItem { Value = "3", Text = "3 answers" }, 
      }; 
     } 
    } 
} 

luego de un controlador:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new AnswersViewModel(); 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(AnswersViewModel model) 
    { 
     return View(model); 
    } 
} 

y, finalmente, una vista inflexible:

@model AnswersViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.DropDownListFor(
     x => x.SelectedAnswer, 
     new SelectList(Model.Answers, "Value", "Text") 
    ) 
    <input type="submit" value="OK" /> 
} 

Ahora, cuando el usuario envía el formulario del Índice Se invocará la acción POST y la propiedad SelectedAnswer del modelo de vista se completará automáticamente con la selección del usuario del menú desplegable.

+0

Wow, Darin, tu respuesta es muy buena. Puedo aprender mucho de ti. Muchas gracias !! – MaryJean

+0

Una pregunta. Dice que SelectListItem no se pudo encontrar. ¿Debo definir esa clase? – MaryJean

+0

@MaryJean, no, debe importar el espacio de nombres donde se define esta clase: 'using System.Web.Mvc'. –

Cuestiones relacionadas