4 messaggi dal 17 agosto 2012
Ciao, ho un problema con la creazione di una dropdownlist tramite il passaggio di dati dal model.
Ho creato un oggetto fornitura così costituito:
public class Fornitura
{
public int IdCliente { get; set; }
public string NomeCliente { get; set; }
public SelectListItem ListaPasta { get; set; }
}
Poi ho un controller dove istanzio un oggetto fornitura e lo passo alla view:
public ActionResult AddFornitura(int id = 0)
{ Fornitura fornitura = new Fornitura
{
var list = from r in db.Pasta.ToList()
select new SelectListItem
{
Value = r.Id.ToString(),
Text = r.Nome

};

IdCliente = puntoVendita.Id,
NomeCliente=puntoVendita.Nome,
ListaPasta = (SelectListItem)list

return View(fornitura)

}
}

Nella view creo la dropdownlist ma non va

@Html.DropDownListFor(model=>model.ListaPasta.Value, Model.ListaPasta)

Potete aiutarmi?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao gio,
dovresti cambiare il tipo della tua proprietà ListaPasta, non dovrebbe essere un SelectListItem.

Immagino che la dropdownlist ti serva a selezionare l'ID numerico di un qualche elemento chiamato "Pasta". Dunque nella tua classe Fornitura ci dovrebbe essere questa proprietà di tipo intero.
public int IdPasta { get; set; }

Ora nella view predisponi la DropDownList per la proprietà che abbiamo appena definito.
@Html.DropDownListFor(model=>model.IdPasta, ViewBag.ListaPasta as IEnumerable<SelectListItem>)

Come vedi ottengo la lista completa degli elementi da una proprietà "ListaPasta" del ViewBag.
Il ViewBag permette di passare oggetti accessori dall'action alla view e lo si può usare, come in questo caso, per passare l'elenco di tutte le voci della dropdownlist.

Quindi l'ultima cosa da fare è valorizzare una proprietà ListaPasta nel ViewBag. Inserisci questo codice nell'action del tuo controller.
var list = from r in db.Pasta.ToList()
select new SelectListItem
{
Value = r.Id.ToString(),
Text = r.Nome
};
//qui valorizzo la proprietà
ViewBag.ListaPasta = list;


ciao,
Moreno
Modificato da BrightSoul il 23 novembre 2013 19.32 -

Enjoy learning and just keep making
1.509 messaggi dal 27 dicembre 2005
BrightSoul ha scritto:
Ciao gio,
dovresti cambiare il tipo della tua proprietà ListaPasta, non dovrebbe essere un SelectListItem.

Immagino che la dropdownlist ti serva a selezionare l'ID numerico di un qualche elemento chiamato "Pasta". Dunque nella tua classe Fornitura ci dovrebbe essere questa proprietà di tipo intero.
public int IdPasta { get; set; }

Ora nella view predisponi la DropDownList per la proprietà che abbiamo appena definito.
@Html.DropDownListFor(model=>model.IdPasta, ViewBag.ListaPasta as IEnumerable<SelectListItem>)

Come vedi ottengo la lista completa degli elementi da una proprietà "ListaPasta" del ViewBag.
Il ViewBag permette di passare oggetti accessori dall'action alla view e lo si può usare, come in questo caso, per passare l'elenco di tutte le voci della dropdownlist.

Quindi l'ultima cosa da fare è valorizzare una proprietà ListaPasta nel ViewBag. Inserisci questo codice nell'action del tuo controller.
var list = from r in db.Pasta.ToList()
select new SelectListItem
{
Value = r.Id.ToString(),
Text = r.Nome
};
//qui valorizzo la proprietà
ViewBag.ListaPasta = list;


ciao,
Moreno
Modificato da BrightSoul il 23 novembre 2013 19.32 -


Quindi ottieni la lista completa degli oggetti e poi lo dropdown scegliera quella selezionata nel database o oggetto ?
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

totti240282 ha scritto:

Quindi ottieni la lista completa degli oggetti

Sì ma non gli oggetti originali di tipo "Pasta". Bisogna proiettarli sul tipo SelectListItem come ha fatto gio.gio.

var list = from r in db.Pasta.ToList()
select new SelectListItem
{
Value = r.Id.ToString(),
Text = r.Nome
};

L'helper method @Html.DropDownListFor infatti ha bisogno di una lista di SelectListItem.

totti240282 ha scritto:

e poi lo dropdown scegliera quella selezionata nel database o oggetto ?

Sì, l'helper method @Html.DropDownListFor, nel generare il menu a tendina, confronterà il valore di ogni suo SelectListItem con quello della proprietà IdPasta del modello. Se il valore è uguale, allora quel SelectListItem verrà impostato come selezionato.
E' una cosa particolarmente utile per le view di modifica perché hai bisogno di preselezionare nella lista il valore precedentemente salvato dall'utente.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.