Dì che ho i seguenti modelli:
public class Person { public string Name { get; set; } public int Age { get; set; } } public class Town { public string Name { get; set; } public IEnumerable People { get; set; } }
Poi, nella mia vista Razor, ho questo:
@model Town @using(Html.BeginForm()) { @foreach(var person in Model.People) { @Html.TextBoxFor(m => person.Name) @Html.TextBoxFor(m => person.Age) } }
Quindi, ho un’azione per il POST, qualcosa del genere:
[HttpPost] public ActionResult Index(Town theTown) { //.... }
Quando inserisco, IEnumerable
non si presenta. Se lo guardo in Fiddler, la raccolta viene pubblicata una sola volta e non enumera la raccolta, quindi ottengo:
People.Name = "whatever" People.Age = 99
Tuttavia, se cambio People in un IList
e utilizzo un ciclo for invece di un foreach …
- Caricamento dell'immagine in ASP.NET MVC
- Salvataggio di molti più dati di relazione su MVC Crea vista
- Come aggiungere spazi dei nomi aggiuntivi alle pagine Razor anziché @using declaration?
- Rasoio ASP.NET MVC 3: include il file JavaScript nel tag head
- Rasoio / JavaScript e punto e virgola finale
@for(var i = 0;i < Model.People.Count;i++) { @Html.TextBoxFor(m => Model.People[i].Name) @Html.TextBoxFor(m => Model.People[i].Age) }
Funziona. Sto facendo qualcosa di sbagliato? Cosa mi manca?
il problema non è con l’object IEnumerable
o IList
è come il rendering della raccolta nella visualizzazione.
@for(var i = 0;i < Model.People.Count;i++) { @Html.TextBoxFor(m => Model.People[i].Name) @Html.TextBoxFor(m => Model.People[i].Age) }
Osserva che con ogni elemento della lista si aggiunge un indice continuo che consente al raccoglitore del modello di fare la sua magia
Una buona lettura
Tutto quello che mancava era piazzare var al posto del Modello stesso (Persone) come sotto
@foreach(People person in Model.People) { @Html.TextBoxFor(m => person.Name) @Html.TextBoxFor(m => person.Age) }
- Errore di Visual Studio 2015 "Riferimento object non impostato su un'istanza di un object" dopo l'installazione di ASP.NET e Web Tools 2015 (RC1 Update 1)
- ASP.NET MVC Razor render senza codifica
- jQuery: Come attraversare / Iterare su un elenco di oggetti
- Il Razor View Engine funziona con Mono?
- Mix Razor e codice Javascript
- Come uccidere un ID sessione o sessione (ASP.NET/C#)
- Interpolazione a stringa in una vista Razor?
- Differenze tra Html.TextboxFor e Html.EditorFor in MVC e Razor