通过浏览器回退(按钮)时,临时数据不会变空(空)

时间:2019-04-11 12:27:36

标签: c# asp.net-mvc razor

我正在response中将成功消息从API发送到controller,并在TempData["Message"]中设置其值,现在重定向到其他操作方法。 像这样:

[HttpPost]
public ActionResult AddFeedbackCategory(IFeedbackCategoryModel modelData)
{
     var message = JsonConvert.DeserializeObject<ApiResponse>(response);
     TempData["Message"] = message.Message;
     return RedirectToAction("CategoryList");
}

[HttpGet]
public ActionResult CategoryList()
{
     var categoryData = JsonConvert.DeserializeObject<List<CategoryModel>>(data);
     return View(categoryData);
}

view的{​​{1}}中,我编写了类似以下的代码:

CategoryList

每当我在系统中添加一些记录时,显示成功消息(保留2秒钟)都会很有帮助。

enter image description here

现在的问题是,当我单击“后退”按钮,然后再次返回到类别列表时,此成功消息再次出现。为什么它的值不为空?是否有任何特定原因,或者我做错了什么?

1 个答案:

答案 0 :(得分:2)

假设您从页面A导航到页面B。然后单击页面B上的Back(返回页面A)。如果您没有在页面A上显式设置缓存头,则浏览器可以决定显示页面A的旧版本(在进入页面B之前呈现的页面)。 / p>

要解决此问题,一个选项是禁用浏览器缓存。例如,将其用于GET端点的操作方法:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*", Location = OutputCacheLocation.None)]

这将确保,如果您按“后退”按钮,将强制浏览器再次点击服务器以重新呈现Page A(而不是仅显示旧版本的Page A)