J'ai un formulaire pour éditer des concerts..net mvc et l'édition de données avec des formulaires
L'action du contrôleur initial est appelée "Edition".
La forme des messages à une seconde action de contrôleur appelé « Mise à jour »
Ainsi, une fois le formulaire posté, j'utilise un ModelBinder sur mesure qui utilise bindingContext.ModelState.AddModelError pour ajouter des messages de validation au ModelState
l'action Mise à jour copntroller ressemble à ceci:
[AcceptVerbs("POST")]
public ActionResult Update(Guid id, FormCollection formCollection)
{
Gig gig = GigManager.GetByID(id);
try
{
UpdateModel<Gig>(gig);
GigManager.Save(gig);
return RedirectToAction("List");
}
catch (Exception e)
{
return View(gig);
}
}
Si le ModelBinder comporte des erreurs, une exception sera lancée par le modèle de mise à jour.
Cela signifie que RedirectToAction ("Edit") est appelé, de sorte que l'action de contrôleur "Edit" d'origine est appelée. Cela signifie que je ne verrai pas mes messages de validation et que toutes les données que l'utilisateur a ajoutées au formulaire seront réinitialisées aux valeurs d'origine!
Comment devrais-je aborder cette question?
J'ai inclus le "modifier" action ci-dessous:
[AcceptVerbs("GET")]
public ActionResult Edit(Guid id)
{
Gig gig = GigManager.GetByID(id);
SelectList days = CreateDays(1, 31, 1, gig.StartDate.Day);
ViewData["day"] = days;
SelectList months = CreateMonths(1, 12, 1, gig.StartDate.Month);
ViewData["month"] = months;
SelectList years = CreateYears(DateTime.Now.Year, DateTime.Now.Year + 10, 1, gig.StartDate.Year);
ViewData["year"] = years;
string bandNames ="";
string bandIds = "";
foreach(Act act in gig.Acts)
{
bandNames += act.Name.Trim() + ", ";
if (act.Artist != null)
{
bandIds += act.Artist.ID + ";";
}
}
ViewData["Bands"] = bandNames;
ViewData["BandIds"] = bandIds;
return View(gig);
}
Cependant, je ne recevoir des messages de validation e