ViewModel in asp .net Core

I have a class VIEWMODEL

 public class EditViewModel      {                         public List<PersonnelModel> personnels { get; set; }         public List<DocumentModel> documents { get; set; }     } 

and i want to edit the personnelModel ,this is a form filled with personal data x for example

but it doesn’t work some one help me please

 @foreach (var item in Model.personnels)     {     <div class="col-md-4">                <form asp-action="EditPers" method="post"  asp-route-id="@item.id">              <div asp-validation-summary="ModelOnly" class="text-danger"></div>                          <input type="hidden" asp-for="@item.id" >                         <div class="form-group">                 <label asp-for="@item.Nom" class="control-label"></label>                 <input class="form-control" asp-for="@item.Nom">                              </div>             <div class="form-group">                                  <input class="form-control" asp-for="@item.Prenom)">                 <span asp-validation-for="@item.Prenom" class="text-danger"></span>               </div>             <div class="form-group">                                 <input class="form-control" asp-for="@item.Email">                 <span asp-validation-for="@item.Email" class="text-danger"></span>             </div>             <div class="form-group">                                 <input class="form-control" asp-for="@item.Telephone">                 <span asp-validation-for="@item.Telephone" class="text-danger"></span>             </div>             <div class="form-group">                                  <input class="form-control" asp-for="@item.Statut">                 <span asp-validation-for="@item.Statut" class="text-danger"></span>             </div>              <div class="form-group">                 <input type="submit" value="save" class="btn btn-info text-white " />                              </div>         </form>     </div>} 

i don’t know how to write the edit code someone help me please

Add Comment
1 Answer(s)

Do you mean you cannot pass data to controller,because the model binding failed.It’s because your asp-for="item.xxx",so your passed data will be like this. enter image description here

If you want to bind the data,Here is a demo worked:

Controller:

[HttpGet]         public ActionResult EditPersonnelModel()         {             EditViewModel e = new EditViewModel();             List<PersonnelModel> list = new List<PersonnelModel> { new PersonnelModel { id = 1, Email = "123@123", Nom = "n1", Prenom = "p1", Statut = "s1", Telephone = "123" }, new PersonnelModel { id = 2, Email = "1234@1234", Nom = "n2", Prenom = "p2", Statut = "s2", Telephone = "1234" } };             e.personnels = list;             return View(e);         }         [HttpPost]         [Route("id")]         public ActionResult EditPers(PersonnelModel p)         {             EditViewModel e = new EditViewModel();             List<PersonnelModel> list = new List<PersonnelModel> { new PersonnelModel { id = 1, Email = "123@123", Nom = "n1", Prenom = "p1", Statut = "s1", Telephone = "123" }, new PersonnelModel { id = 2, Email = "1234@1234", Nom = "n2", Prenom = "p2", Statut = "s2", Telephone = "1234" } };             e.personnels = list;             return View("EditPersonnelModel",e);         } 

EditViewModel:

public class EditViewModel     {         public List<PersonnelModel> personnels { get; set; }     } 

PersonnelModel:

public class PersonnelModel     {         public string Nom { get; set; }         public string Prenom { get; set; }         public string Email { get; set; }         public string Telephone { get; set; }         public string Statut { get; set; }         public int id { get; set; }              } 

View:

@model EditViewModel @{     ViewData["Title"] = "EditPersonnelModel"; }  <h1>EditPersonnelModel</h1>  @foreach (var item in Model.personnels) {     <div class="col-md-4">          <form asp-action="EditPers" method="post" asp-route-id="@item.id">              <div asp-validation-summary="ModelOnly" class="text-danger"></div>              <input type="hidden" asp-for="@item.id" name="id">              <div class="form-group">                 <label asp-for="@item.Nom" class="control-label"></label>                 <input class="form-control" asp-for="@item.Nom" name="Nom">               </div>             <div class="form-group">                  <input class="form-control" asp-for="@item.Prenom" name="Prenom">                 <span asp-validation-for="@item.Prenom" class="text-danger"></span>               </div>             <div class="form-group">                  <input class="form-control" asp-for="@item.Email" name="Email">                 <span asp-validation-for="@item.Email" class="text-danger"></span>             </div>             <div class="form-group">                  <input class="form-control" asp-for="@item.Telephone" name="Telephone">                 <span asp-validation-for="@item.Telephone" class="text-danger"></span>             </div>             <div class="form-group">                  <input class="form-control" asp-for="@item.Statut" name="Statut">                 <span asp-validation-for="@item.Statut" class="text-danger"></span>             </div>              <div class="form-group">                 <input type="submit" value="save" class="btn btn-info text-white " />              </div>         </form>     </div>} 

Result: enter image description here

Answered on July 16, 2020.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.