Ho un modello:errore MVC 4 DropDownListFor - Non v'è alcun Viewdata elemento di tipo 'IEnumerable <SelectListItem>' che ha la chiave
public class Auction
{
public string Title { get; set; }
public string category { get; set; }
}
e un controller:
[HttpGet]
public ActionResult UserForm()
{
var categoryList = new SelectList(new[] { "auto", "elec", "games", "Home" });
ViewBag.categoryList = categoryList;
return View();
}
Nel Vedi ho queste righe:
<div class="editor-field">
@Html.DropDownListFor(model =>
model.category,(SelectList)ViewBag.categoryList)
@Html.ValidationMessageFor(model => model.category)
</div>
l'errore che ottengo quando provo a salvare il modulo è:
012.351.Non esiste un elemento ViewData di tipo "IEnumerable" che abbia la chiave "categoria". Descrizione: si è verificata un'eccezione non gestita durante l'esecuzione della richiesta Web corrente. Si prega di rivedere la traccia dello stack per ulteriori informazioni sull'errore e su dove è stato creato il codice .
Dettagli eccezione: System.InvalidOperationException: non esiste ViewData voce di tipo 'IEnumerable' che ha la chiave 'categoria'.
Non capisco qual è il problema, dal momento che ho fatto (o cercato di fare) tutto ciò che viene fatto in questa guida: https://www.youtube.com/watch?v=7HM6kDBj0vE
Il video può anche essere trovato in questo link (Capitolo 6 - binding automaticamente i dati nella richiesta): http://www.lynda.com/ASPNET-tutorials/ASPNET-MVC-4-Essential-Training/109762-2.html
grazie mille! Questa è ovviamente la risposta corretta. –
Quello che non capisco, è il motivo per cui ho bisogno di ricostruire nella funzione di post la stessa lista? Ho pensato di aver bisogno solo del risultato che è stato scelto dall'utente e che ritorna nel campo categoria del modello. –
La domanda è: stai usando la vista di ritorno che ha '@ Html.DropDownListFor (model => model.category, (SelectList) ViewBag.categoryList)'? Se è così allora non importa da dove proviene. Che importa è che fornisci la vista con un elenco ** non NULL **. Se proviene da un post, dopo aver fatto un post i valori non ci sono più - semplicemente perché non li hai "postati". –