Ho il seguente modello vistaL'elemento Viewdata che ha la chiave 'XXX' è di tipo 'System.Int32' ma deve essere di tipo 'IEnumerable <SelectListItem>'
public class ProjectVM
{
....
[Display(Name = "Category")]
[Required(ErrorMessage = "Please select a category")]
public int CategoryID { get; set; }
public IEnumerable<SelectListItem> CategoryList { get; set; }
....
}
e il seguente metodo controllore per creare un nuovo progetto e assegnare un Category
public ActionResult Create()
{
ProjectVM model = new ProjectVM
{
CategoryList = new SelectList(db.Categories, "ID", "Name")
}
return View(model);
}
public ActionResult Create(ProjectVM model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// Save and redirect
}
e nella vista
@model ProjectVM
....
@using (Html.BeginForm())
{
....
@Html.LabelFor(m => m.CategoryID)
@Html.DropDownListFor(m => m.CategoryID, Model.CategoryList, "-Please select-")
@Html.ValidationMessageFor(m => m.CategoryID)
....
<input type="submit" value="Create" />
}
La vista mostra correttamente, ma al momento della presentazione del modulo, ricevo il seguente messaggio di errore
InvalidOperationException: L'elemento Viewdata che ha la chiave 'IDCategoria' è di tipo 'System.Int32' ma deve essere di tipo 'IEnumerable <SelectListItem> '.
Lo stesso errore si verifica con il metodo @Html.DropDownList()
, e se passo il SelectList utilizzando un ViewBag
o ViewData
.
@Shyju, Sì, ho chiesto e risposto (come wiki della comunità) puramente ai fini del dupe-hammering molte altre domande simili su SO che rimangono senza risposta o non accettate. Ma vedo che gli elettori della vendetta sono già iniziati - il primo era meno di 2 secondi dopo la pubblicazione - non abbastanza tempo per leggerlo, figuriamoci la risposta. –
Capisco. Ci sono centinaia di domande con lo stesso problema. Di solito le persone che fanno quelle domande non fanno ricerche appropriate (o hanno copiato e incollato una risposta esistente parola per parola, ma non hanno funzionato!) Quindi non sono sicuro che questo potrebbe davvero aiutare. :) Ben scritto BTW. – Shyju
@Stephen questo non è il modo giusto in cui stai chiedendo e stai rispondendo – Dilip