2016-07-15 2 views
0

Je voudrais avoir une sauvegarde automatique pour les formulaires sur certaines pages de mon site Web. Donc, je me branche dans window.onbeforeunload pour soumettre des formulaires. Mon problème est que je voudrais leur donner un succès ou un message d'erreur avec toastr mais je ne sais pas s'il existe déjà quelque chose pour persister les données d'une action du contrôleur à toute action sur le site. Je ne pense pas que je serai en mesure d'utiliser des redirections avec tempdata ou le viewbag. Cette fonctionnalité existe-t-elle déjà?Comment conserver des données à une action de contrôleur dans un projet?

Répondre

0

Pourquoi n'utilisez-vous pas les modèles? Je pense que la meilleure façon de transmettre des données par le biais de contrôleurs est juste de passage le modèle que vous soumettez à des actions respectives comme

return View("ViewName",model); 

Ou utilisez RedirectToAction si vous devez acess un autre contrôleur

return RedirectToAction("YourAction", "YourController", new {model = yourModel}); 

Pour toastr Je recommande de créer un wrapper, voir http://labs.bjfocus.co.uk/2014/06/create-an-mvc-wrapper-for-toastr/

+0

Je permets à l'utilisateur d'accéder à n'importe quelle page, donc je ne peux pas utiliser la redirection sans ajouter un moyen de poster l'emplacement de redirection avec le reste des données. –

0

J'ai donc réussi à obtenir ce résultat en utilisant OnActionExecuting similaire à la réponse de Preet Singh mais avec des pièces supplémentaires.

public const string SESSION_ERROR = "SessionError"; 
    public const string SESSION_SUCCESS = "SessionSuccess"; 

    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     base.OnActionExecuting(filterContext); 
     ViewBag.Error = HttpContext.Session[SESSION_ERROR]; 
     ViewBag.Success = HttpContext.Session[SESSION_SUCCESS]; 
     HttpContext.Session[SESSION_ERROR] = string.Empty; 
     HttpContext.Session[SESSION_SUCCESS] = string.Empty; 
    } 

Le code ci-dessus est utilisé pour conserver les messages à toute action du contrôleur et me permet de définir les messages facilement avec le HttpContext.Session. Ce code est dans un BaseController et tous les contrôleurs l'étendent.