使用RedirectToAction后,会话变量为null

时间:2019-05-09 05:01:33

标签: c# asp.net-mvc

在视图Edit.cshtml中编辑信息后,我设置了一个会话变量Session["ToastMessage"] = "Sucessfully";,使其在Edit.cshtml中显示,然后再次加载。但是我在View中看到了Session["ToastMessage"] = null

        // GET: About/Edit/
        public ActionResult Edit()
        {
            AboutInformation about = LoadDataFromConfigFile();
            return View(about);
        }

        // POST: About/Edit/
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "NameApp,ContactInformation,Email,Fax,Phone,ReleaseDay,LogoPathOfProduction,IsShow,LatestVersion,ReleaseNotes")] AboutInformation about,List<string> imagesToDelete, List<HttpPostedFileBase> images, bool? isShowInfo)
        {
            if (ModelState.IsValid)
            {
                //update....
            }

            Session["ToastMessage"] = "Sucessfully";
            return RedirectToAction("Edit");
        }

试图调试,当它刚刚传递给Get方法时显示Session["ToastMessage"] = null

  // GET: About/Edit/
            public ActionResult Edit()
            {
            }

Session很明显,在我的应用程序中已经使用了很多Session,并且运行良好。 ASP是否会在任何随机时间清除会话? 需要帮助!

3 个答案:

答案 0 :(得分:1)

对于您的情况,可以使用TempData代替Session

TempData["ToastMessage"] = "Sucessfully";

TempData可用于存储可在后续请求中使用的临时数据。

public ActionResult Edit()
        {
            var result = TempData["ToastMessage"];
            // check result here
            AboutInformation about = LoadDataFromConfigFile();
            return View(about);
        }

答案 1 :(得分:0)

在重定向到一个ActionMethod到另一个Action时,可以使用TempData。

var Status=TempData["ToastMessage"];

答案 2 :(得分:0)

您可以使用@ hien-nguyen答案直接返回查看并显示烤面包消息。但是,根据您的情况,您将重定向到其他操作方法。 因此,您可以使用Temp数据的Keep方法,如下所示:

// POST: About/Edit/
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "NameApp,ContactInformation,Email,Fax,Phone,ReleaseDay,LogoPathOfProduction,IsShow,LatestVersion,ReleaseNotes")] AboutInformation about,List<string> imagesToDelete, List<HttpPostedFileBase> images, bool? isShowInfo)
    {
        if (ModelState.IsValid)
        {
            //update....
        }

        TempData["ToastMessage"] = "Sucessfully";
        var message = TempData["ToastMessage"];
        TempData.Keep("ToastMessage");
        return RedirectToAction("Edit");
    }

在“获取方法”中:

public ActionResult Edit()
        {
            AboutInformation about = LoadDataFromConfigFile();
            var message = TempData["ToastMessage"];
            return View(about);
        }