【发布时间】:2019-09-26 21:07:46
【问题描述】:
在视图Edit.cshtml 中编辑信息后,我设置了一个会话变量Session["ToastMessage"] = "Sucessfully"; 以在再次加载后在Edit.cshtml 中显示它。但我在视图中看到了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()
{
}
会话以某种方式清晰,在我的应用程序中使用了很多会话,并且效果很好。 ASP 会在任何随机时间清除会话吗? 需要帮助!
【问题讨论】:
-
您可以使用 TempData,如下面的答案所示。此外,您还可以使用它的 Keep 或 Peek 方法使其在其他操作方法中也可用。但我认为您不需要它,因为它是 Toast 消息。
-
我认为 TempData 和 Session 都适用于这种情况。我已经尝试过 TempData,但它得到的 null 与我使用 Session 时相同。想知道是什么使值变为空。 @Sid
-
你需要使用keep,因为这里是从一种方法到另一种操作方法。所以为此它会像: TempData.Keep("ToastMessage");返回之前在您的编辑方法中。然后在您的 Get 方法中再次阅读。
标签: c# asp.net-mvc