Je suis nouveau à MVC et je vais essayer d'élaborer mon problème avec soin. J'ai un contrôleur avec 2 méthodes d'action, dont une est une méthode POST:Chargement de la même vue avec les données publiées par l'utilisateur si ModelState.IsValid renvoie false
[AllowAnonymous]
public ActionResult Register()
{
RegisterViewModel registerModel = new RegisterViewModel();
//Some Code to populate dropdowns for user to select
return View(registerModel);
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
try
{
if (ModelState.IsValid)
{
//insert data in tables
RedirectToAction("Register");
}
AddErrors(result);
}
catch (Exception ex)
{
ModelState.AddModelError("", "Error Processing Your Request");
}
// If ModelState.IsValid returns false show the form with posted data by user
return RedirectToAction("Register", model);
}
Maintenant, lorsque le formulaire est affiché toutes les données saisies par l'utilisateur ne persistent pas. Je veux afficher le même formulaire à l'utilisateur avec ses données affichées et remplir les détails manquants pour terminer l'inscription. Désolé, c'est une question très basique. Comment puis-je conserver les données sur la même vue?
Si elle est invalide, alors vous utilisez 'return View (model);' pour retourner la vue et afficher les erreurs de validation (pas 'RedirectToAction (...)') –
return RedirectToAction ("Enregistrer", modèle) appelle le même fonction encore – Musab
J'ai aussi EditorTemplate qui charge sur la vue et quand je renvoie View (model); Ensuite, j'obtiens l'erreur comme ** L'élément ViewData qui a la clé 'EmploymentType' est de type 'System.Int32' mais doit être de type 'IEnumerable'. ** –
LearningPal