2009-08-10 11 views

risposta

25

Sì, per impostazione predefinita un elenco di più elementi verrà inviato attraverso una matrice dei valori selezionati.

This article ha ulteriori informazioni, incluso come utilizzare le viste fortemente tipizzate con una selezione multipla.

Dalla "articolo" collegato:

  • La classe modello o vista modello ha bisogno di una proprietà della raccolta per gli ID per le voci delle opzioni selezionate, per esempio List<int> ToppingIds.
  • Nel metodo di azione del controllore a cui è associato il modulo contenente i POST a selezione multipla, è possibile accedere agli elementi di opzione selezionati tramite la proprietà di raccolta aggiunta al modello o vista la classe del modello.
7

In VegTableViewmodel:

public IEnumerable<MultiSelectList> Vegetables { get; set; } 

Nel Controller: Get lista verdure, e poi passarlo alla proprietà verdure del VegTableViewModel.

viewmodel.Vegetables = vegetables .Select(d => new MultiSelectList(d.VegName)); 

Nella Vista:

@Html.ListBoxFor(m => m.L, new MultiSelectList(Model.Vegetables.Select(d => d.Items)) 
19

Sì, restituisce un array.

vista del modello:

public class MyViewModel 
{ 
    public int[] SelectedIds { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

Controller:

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     // fetch the items from some data source 
     Items = Enumerable.Select(x => new SelectListItem 
     { 
      Value = x.Id, 
      Text = "item " + x.Id 
     }) 
    }; 
    return View(model); 
} 

Vista:

@model MyViewModel 
@Html.ListBoxFor(x => x.SelectedIds, Model.Items) 
Problemi correlati