C# 通过浏览器回击(按钮)时,临时数据不会变为空(null)
我正在从API向控制器发送一条成功消息作为响应,并在TempData[message]中设置它的值,现在重定向到其他一些操作方法。 像这样:C# 通过浏览器回击(按钮)时,临时数据不会变为空(null),c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在从API向控制器发送一条成功消息作为响应,并在TempData[message]中设置它的值,现在重定向到其他一些操作方法。 像这样: [HttpPost] public ActionResult AddFeedbackCategory(IFeedbackCategoryModel modelData) { var message = JsonConvert.DeserializeObject<ApiResponse>(response); TempData
[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);
}
@if (TempData["Message"] != null)
{
<div id="snackbar" class="snack_success">@TempData["Message"].ToString()
</div>
TempData["Message"] = null;
}
每当我像这样在我的系统中添加一些记录时,显示一条持续2秒的成功消息会很有帮助
现在的问题是,当我点击后退按钮,然后再次返回类别列表时,此成功消息再次出现。为什么它的值不会变为null?是否有任何具体原因或我做错了什么?假设您从A页导航到B页。然后单击B页上的“上一步”返回A页。如果您没有在A页上明确设置缓存标题,浏览器可能会决定显示在转到B页之前呈现的A页的旧版本 要解决此问题,一个选项是禁用浏览器缓存。例如,对GET端点的操作方法使用此选项:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*", Location = OutputCacheLocation.None)]
这将确保,如果您按下“上一步”按钮,浏览器将被迫再次点击服务器以重新呈现页面A,而不仅仅是显示页面A的旧版本。当您重定向类别列表时,您每次都在填充TempData[],只有在成功插入的情况下才需要填充TempData[]。您不需要填写每个重定向。@NiravVasoya请再看一次我的问题,我做了一些更改,也许您现在明白了。如果您将[OutputCacheNoStore=true,Duration=0,VaryByParam=*,Location=OutputCacheLocation.None]作为GET端点的属性,然后重试,问题还在继续吗?@DivyaAgrawal我现在看到了你编辑的问题,很高兴知道你已经得到了解决方案。谢谢。对于.NET核心来说,它是[ResponseCacheDuration=0,Location=ResponseCacheLocation.None,NoStore=true]——同样的行为也存在于那里。