如何将数据保存到项目中的任何控制器操作

本文关键字:任何 控制器 操作 项目 数据 保存 | 更新日期: 2023-09-27 17:57:03

我想在我的网站的某些页面上自动保存表单。所以我钩window.onbeforeunload提交表格。我的问题是我想给他们一个成功或错误消息toastr但我不知道是否已经存在一些东西来将数据从一个控制器操作保存到站点上的任何操作。我认为我将无法将重定向与临时数据或视图包一起使用。此功能是否已经存在?

如何将数据保存到项目中的任何控制器操作

您是否尝试查看操作筛选器,可以在操作筛选器中捕获操作结果并保存数据。您还可以有选择地将操作筛选器应用于操作或全局。看看这里 - http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

你为什么不使用模型?我认为通过控制器传递数据的最佳方法是将您提交的模型传递给相应的操作,例如

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/

因此,

我能够通过使用类似于Preet Singh的响应OnActionExecuting来使其工作,但有一些额外的部分。

    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中,所有控制器都对其进行扩展。