Je souhaite modifier ces données dans la base de données et le retour de nouvelles données
lorsque je clique sur enregistrer des données de bouton ne change pas Voici contrôleur:Modifier dans mvc4 ne fonctionne pas
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(CustomPerformancePerformersModel customPerformancePerformersModel)
{
if (ModelState.IsValid)
{
int perfromanceId = Convert.ToInt32(TempData.Peek("CurrentPerformanceId"));
customPerformancePerformersModel.performanceObj = db.Performances.Where(x => x.PerformanceId == perfromanceId).FirstOrDefault();
db.Entry(customPerformancePerformersModel.performanceObj).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.EventId = new SelectList(db.Events, "EventId", "Name", customPerformancePerformersModel.performanceObj.EventId);
ViewBag.VenueId = new SelectList(db.Venues, "VenueId", "Name", customPerformancePerformersModel.performanceObj.VenueId);
ViewBag.Performers = new SelectList(db.PerformerPerformances, "Performers", "Name", customPerformancePerformersModel.performanceObj.PerformerPerformances);
return View(customPerformancePerformersModel.performanceObj);
}
et voici le code html:
<div class="form-group">
@Html.LabelFor(model => model.performanceObj.IsVisible, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.performanceObj.IsVisible)
@Html.ValidationMessageFor(model => model.performanceObj.IsVisible, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.performanceObj.IsFeatured, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.performanceObj.IsFeatured)
@Html.ValidationMessageFor(model => model.performanceObj.IsFeatured, "", new { @class = "text-danger" })
</div>
</div>
Votre action d'édition est-elle appelée? – Forlani
pouvez-vous coller votre formulaire HTML complet avec bouton de soumission et javascript connexes le cas échéant? Avez-vous eu un point de rupture sur votre action Modifier? –
Je suppose qu'en faisant customPerformancePerformersModel.performanceObj = db.Performances.Where (x => x.PerformanceId == perfromanceId) .FirstOrDefault(); vous remplacez tous les changements vers le modèle. ainsi à sauve que ce qui était déjà là. à la place, obtenez la performance de la base de données comme vous l'avez déjà fait, mais dans une variable locale. puis changer ses données avec les données de la CustomerPerformanceModel puis enregistrez cette variable locale – StijnvanGaal