gpt4 book ai didi

c# - .Net Core 页面未缓存并在单击浏览器后退按钮时获取 “ERR_CACHE_MISS” 错误页面

转载 作者:行者123 更新时间:2023-12-04 09:37:34 32 4
gpt4 key购买 nike

几天来,我一直在努力解决这个问题,但根本没有多少运气。
我们在数据表的 foreach 循环中有一个“详细信息”@Html.ActionLink。
然后在“结果” Controller 中,我们有 HTTPGet 和 HTTPPost 操作来填充此数据表。
此处列出的结果 Controller 代码...... https://localhost:5003/Outcomes/ByProcedure

[HttpGet]
public IActionResult ByProcedure()
{
…code to get result list

return View(result);
}

[HttpPost]
public IActionResult ByProcedure(IFormCollection form, string submitForm)
{
…after clicking submit button we take form input date pickers for start and end dates and pass in to get list

return View(result);
}
当我单击详细信息链接时,它会转到不同的“报告” Controller 和如下所示的操作
<tr>
<td class="detailslink">@Html.ActionLink("Details", "ByProcedureDetailView", "Reports", new { @id = item.ProcTypeID }, null)</td>
</tr>
以下是“Reports” Controller 中的 Action 结果具有 Action :https://localhost:5003/reports/ByProcedureDetailView/7
[HttpGet]
public IActionResult ByProcedureDetailView()
{
code to load another datatable…

return View(result);
}
数据表在此页面中填充良好。
但是,问题是我们是否单击此页面上的后退按钮
https://localhost:5003/reports/ByProcedureDetailView/7
到本页:
https://localhost:5003/Outcomes/ByProcedure
单击后退按钮后,我们会收到以下消息并在开发工具中看到此消息。
这发生在 Chrome、Safari 和 IE 等中。
enter image description here
Confirm Form Resubmission
This webpage requires data that you entered earlier in order to be properly displayed. You can send this data again, but by doing so you will repeat any action this page previously performed.

* Press the reload button to resubmit the data needed to load the page.

ERR_CACHE_MISS
我已经浏览了整个互联网,并没有找到任何有用的东西。
任何帮助将不胜感激。

最佳答案

This is the behavior of the browser.


如果提交页面是购物车结账页面,并且服务器上没有转发检测,那么用户将被收取两次费用。这是一个非常普遍的问题,浏览器必须检测到这一点并警告用户。
通常我们使用 PRG pattern解决这个问题,或者使用 TempData .
您可以引用 this .
在你的情况下,你可以结合以上两种方法来解决它。
我创建了一个简单的演示,您可以引用如下:
    [HttpGet]
public IActionResult ByProcedure()
{
var result = _context.Cobro.ToList();
var value = TempData["Cobro"];
if (value is string json)
{
result = JsonConvert.DeserializeObject<List<Cobro>>(json);
}
return View(result);
}

[HttpPost]
public IActionResult ByProcedure(IFormCollection form, string submitForm)
{
var result = _context.Cobro.ToList().Where(x => x.Telefono == submitForm).ToList();
TempData["Cobro"] = JsonConvert.SerializeObject(result);
TempData["Name"] = submitForm;
return RedirectToAction(nameof(ByProcedure));
}
看法:
@model IEnumerable<WebApplication_core_mvc.Models.Cobro>
@{
ViewData["Title"] = "ByProcedure";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>ByProcedure</h1>
<form asp-action="ByProcedure">
<input id="Text1" type="text" name="submitForm" value="@TempData["Name"]"/>
<table class="table table-bordered">
<tr>
<th>Telefono</th>
<th>Empresa</th>
<th>Saldo</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Telefono</td>
<td>@item.Empresa</td>
<td>@item.Saldo</td>

<td class="detailslink">@Html.ActionLink("Details", "ByProcedureDetailView", "Reports", new { @id = item.Presta }, null)</td>
</tr>
}
</table>
<input id="Submit1" type="submit" value="submit" />
</form>
这是测试结果:
enter image description here

关于c# - .Net Core 页面未缓存并在单击浏览器后退按钮时获取 “ERR_CACHE_MISS” 错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62493440/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com