Cómo MVC 5 desplegable (selección múltiple) cuadro

Estoy teniendo problemas con este cuadro desplegable, solo puedo parecer para obtener el derecho, aquí está el código:

Vista (Índice.cshtml):

@using EvaSimulator.Models
@Model EvaSimulator.Models.ModelVariables
@{
    ViewBag.Title = "Index";
    ModelVariables mv = new ModelVariables();
}
@using (Html.BeginForm("DropDownBox", "Home", FormMethod.Get))
{
    @Html.DropDownList("dropdownbox", )
    <button type="submit"></button>
}
<p>@Model.dropDownList</p>

Modelo (ModelVariables.cs):

public string dropDownList = "";

(Controlador HomeController.cs):

public ActionResult DropDownBox(string dropdownbox)
{
    ModelVariables mv = new ModelVariables();
    mv.dropDownList = dropdownbox;
    return this.View("Index", mv);
}

Esto sólo doesent mirar a la derecha, y yo sólo estoy buscando una solución sencilla, crear un menú desplegable de selección múltiple cuadro de lista y lo puedo enviar, me sale la lista de valores y de impresión en <p> etiqueta en la vista (@Model.dropDownList)

InformationsquelleAutor | 2016-05-18

2 Kommentare

  1. 4

    Primero debe agregar una nueva propiedad a la vista de la clase del modelo de la lista desplegable de datos de tipo IEnumerable<SelectListItem>. Vamos a añadir una segunda propiedad de tipo array(ya que quieres una selección múltiple) para tener la opción seleccionada valores .

    public class ModelVariables
    {
      public IEnumerable<SelectListItem> Options {set;get;}
      public string[] SelectedOptions { set;get;}
    }

    Ahora en su CONSEGUIR la acción, crear un objeto de este modelo de vista,rellenar el Options propiedad y enviar a la vista.

    public ActionResult Create()
    {
      var vm = new ModelVariables();
      vm.Options = new List<SelectListItem> {
         new SelectListItem { Value="MI", Text="Michigan" },
         new SelectListItem { Value="NY", Text="New York" },
      };
      return View(vm);
    }

    Ahora, en su opinión ,el uso de la Html.ListBoxFor método auxiliar

    @model ModelVariables
    @using(Html.BeginForm())
    { 
       <label> Select items <label>
       @Html.ListBoxFor(s=>s.SelectedOptions,Model.Options)
       <input type="submit" />
    }

    Ahora en su HttpPost acción, puede tener el mismo modelo de vista como su parámetro de método y Modelo de cuaderno será capaz de asignar la publicación de los datos del formulario a un objeto de eso. El seleccionado las opciones de la interfaz de usuario estará disponible en la SelectedOptions de la propiedad del objeto de modelo de vista.

    [HttpPost]
    public ActionResult Create(ModelVariables model)
    {
      //check model.SelectedOptions property value
     //to do : Return something
    }
    • Hola Shyju, se publicó el código y se puso una excepción en el ‘no Hay viewdata elemento del tipo ‘IEnumerable<SelectListItem>’ la clave ‘SelectedOptions’
    • El código anterior utiliza el modelo inflexible & las propiedades para construir la lista desplegable. No hay manera de que usted debe conseguir que el error a menos que usted no está utilizando el código explicado en la respuesta anterior.
  2. 1

    Utilizar el For ayudante en lugar de conseguir el tiempo de compilación de cheques.
    Cuando se utiliza MultiSelectList necesitamos para enlazar los valores seleccionados a una matriz en el primer parámetro, entonces usted puede pasar su lista de selección con los valores que se muestran en el segundo parámetro.

     public string[] SelectedValues { get; set; }
    
     public MultiSelectList DropDownList { get; set; }

    Controlador:

     mv.DropDownList = new MultiSelectList(/*Your list of items here*/)

    Vista:

     @Html.DropDownListFor(x => Model.SelectedValues, Model.DropDownList)
    • Esto me ayudó mucho, gracias!
    • Genial!!! Esto se siente como hace mucho tiempo cuando he publicado esto.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea