Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过浏览器回击(按钮)时,临时数据不会变为空(null)_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 通过浏览器回击(按钮)时,临时数据不会变为空(null)

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

我正在从API向控制器发送一条成功消息作为响应,并在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);
}
  @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]——同样的行为也存在于那里。