gpt4 book ai didi

asp.net-mvc-2 - TempData ["message"] 不可靠——我做错了什么?

转载 作者:行者123 更新时间:2023-12-02 03:08:20 24 4
gpt4 key购买 nike

当用户在我的网站上执行以下操作时,我使用 TempDate["Message"] 显示小更新横幅:

[AcceptVerbs(HttpVerbs.Post), Authorize(Roles = "Admins")]
public ActionResult Delete(int id)
{
_Repo.DeletePage(id); // soft-delete

TempData["Message"] = "Page deleted!";
return RedirectToAction("Revisions", "Page", new { id = id });
}

然后在我的母版页中我有这个:

<%-- message box (show it only if it contains a message) --%>
<% string Message = (TempData["Message"] ?? ViewData["Message"]) as string;

if(!string.IsNullOrEmpty(Message)){
%>
<div id="message"><%:Message %></div>
<% }

TempData["Message"] = null; ViewData["Message"] = null; %>

我同时点击了 TempData 和 ViewData,因为我在某处读到 TempData 应该用于重定向,而 ViewData 应该用于其他情况。

问题是:消息通常不会立即显示。有时,需要在网站的不同部分单击一两次才能显示该消息。这很奇怪。

有什么想法吗?

最佳答案

您应该验证所有使用TempData["Message"]的地方在你的代码中。对应ASP.NET MVC does browser refresh make TempData useless?您可以阅读TempData["Message"]仅一次(另见 http://forums.asp.net/p/1528070/3694325.aspx )。在TempData["Message"]的第一次使用期间,TempData["Message"]将从内部TempDataDictionary中删除.

也许使用 TempData["Message"] 会更好仅在 RevisionsPage的行动 Controller 而不是母版页内或 View 内。

关于asp.net-mvc-2 - TempData ["message"] 不可靠——我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2915882/

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