J'ai un modèle objet et je le passe à la vue afin que l'utilisateur puisse entrer ses commentaires pour certaines des propriétés de l'objet dans le cadre d'une enquête.Comment renvoyer une liste d'objets au contrôleur dans MVC
Je peux recevoir ce que l'utilisateur a saisi pour un objet si je ne restitue qu'un seul objet à la vue. Toutefois, lorsque je veux rendre plusieurs (une liste) d'objets à la vue, je reçois une liste d'objets nulle lorsque l'utilisateur clique sur le formulaire de soumission.
S'il vous plaît voir mon code ci-dessous:
Ceci est mon modèle d'objet
public class SurveyViewModel
{
public string Name { get; set; }
public double PV { get; set; }
public double QtyUsePerMonth { get; set; }
public double TotalPVPerMonth { get; set; }
}
Ceci est mon point de vue où je rends la liste des objets
@model IEnumerable<WebApplication4.Models.SurveyViewModel>
@{
ViewBag.Title = "Survey";
}
<h2>Survey</h2>
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "form1" }))
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.PV)
</th>
<th>
@Html.DisplayNameFor(model => model.QtyUsePerMonth)
</th>
<th>
@Html.DisplayNameFor(model => model.TotalPVPerMonth)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
@Html.HiddenFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.PV)
@Html.HiddenFor(modelItem => item.PV)
</td>
<td>
@Html.TextBoxFor(modelItem => item.QtyUsePerMonth)
</td>
<td>
@Html.TextBoxFor(modelItem => item.TotalPVPerMonth)
</td>
</tr>
}
</table>
<input type="submit" value="Submit">
}
Et ceci est ma méthode HttpPostLorsque l'utilisateur clique sur le bouton Soumettre, j'ai une valeur null pour le modèle où je m'attends à voir une liste.
S'il vous plaît laissez-moi savoir ce que je fais mal.
Nous vous remercions de votre aide.
Vous ne pouvez pas utiliser 'foreach' pour [afficher une collection] (http://stackoverflow.com/questions/19964553/mvc-form-not-able-to-post-list-of-objects) comme ça. Vous avez besoin d'un index. – Jasen
@Jasen pouvez-vous donner un code pour mon cas comment utiliser l'index? – CB4
Le motif de base est 'pour (int i = 0; i m.Collection [i] .Property)}'. Voici [un autre bon exemple] (http://stackoverflow.com/a/29161796/2030565). –
Jasen