2016-07-15 1 views
0

Я хотел бы иметь автосохранение для форм на некоторых страницах моего сайта. Поэтому я переписываю window.onbeforeunload, чтобы отправить формы. Моя проблема в том, что я хотел бы дать им сообщение об успешном завершении или ошибке с toastr, но я не знаю, существует ли что-то уже существующее для сохранения данных от одного действия контроллера до любого действия на сайте. Я не думаю, что смогу использовать переадресацию с tempdata или viewbag. Эта функциональность уже существует?Как перенести данные на любое действие контроллера в проекте?

ответ

0

Почему вы не используете модели? Я думаю, что лучший способ передачи данных через контролер только проездом модель представить соответствующие действия как

return View("ViewName",model); 

Или использовать RedirectToAction если вы должны Асесс другого контроллера

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

Для toastr Я рекомендую создать обертка, см. http://labs.bjfocus.co.uk/2014/06/create-an-mvc-wrapper-for-toastr/

+0

Я разрешаю пользователю перейти на любую страницу, поэтому я не могу использовать перенаправление, не добавляя способ публикации места перенаправления с остальными данными. –

1

Вы пытались изучить Action Filters, вы можете зафиксировать результат действия в Action Filter и сохранить данные. Также вы можете применять фильтры действий выборочно к действиям или глобально. Посмотрите здесь - http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

0

Так что я смог заставить это работать, используя OnActionExecuting, как и ответ Preet Singh, но с некоторыми дополнительными деталями.

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; 
    } 

Код выше используется упорствовать сообщения любого действия контроллера и позволяет мне установить сообщения легко с HttpContext.Session. Этот код находится в BaseController, и все контроллеры расширяют его.

Смежные вопросы