当用户在我的网站上执行以下操作时,我使用 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"]
会更好仅在 Revisions
内Page
的行动 Controller 而不是母版页内或 View 内。
关于asp.net-mvc-2 - TempData ["message"] 不可靠——我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2915882/