我正在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秒钟)都会很有帮助。
现在的问题是,当我单击“后退”按钮,然后再次返回到类别列表时,此成功消息再次出现。为什么它的值不为空?是否有任何特定原因,或者我做错了什么?
答案 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)