我有一个问题,我搜索了文档以查看可能是我犯了错误或其他什么,但没有找到我正在寻找的答案。我的问题是,保存产品后,我使用 PRG(Post-Redirect-Get) 模式,因此用户在按下浏览器后退按钮时不会重新提交表单。我使用 TempData 显示一次性消息,因为它在删除之前将数据保留到下一个请求。此方法在我的开发环境中运行良好。但是在我将应用程序部署到生产服务器后,虽然操作方法遵循 PRG 模式并成功返回,但 TempData 没有持久化,也没有显示消息。
这是我显示消息的方式:
@if (TempData["Message"] != null)
{
var message = JsonConvert.DeserializeObject<MessageModel>(TempData["Message"].ToString());
<div class="alert bg-@message.Class text-center alert-dismissible fade show fixed-bottom w-100" role="alert" style="margin:0">
<h6 class="text-white">@message.Message</h6>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
}
这是方法示例:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(Product model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var product = await _productRepository.GetProductAsync(model.ID);
product.Name = model.Name; product.ProductCode = model.ProductCode; product.Category = model.Category;
product.Description = model.Description;
await _productRepository.UpdateAsync(product);
TempData["Message"] = JsonConvert.SerializeObject(new MessageModel { Class = "success", Message = "Product has been successfully updated" });
return RedirectToAction("Edit", new { id = model.ID });
}
任何帮助,将不胜感激。谢谢!