【发布时间】:2010-05-26 19:00:30
【问题描述】:
我使用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 应该用于其他情况。
问题是:消息通常不会立即显示。有时需要单击或两次单击站点的不同部分才能显示消息。这很奇怪。
有什么想法吗?
【问题讨论】:
-
你是不是通过ajax请求在其他地方设置TempData?
-
不,不涉及 ajax(好问题,谢谢!)
-
这种情况是否发生在任何地方,或者只是在您的开发环境中? (我也经历过类似的事情,但我只是在通过 Visual Studio 网络服务器运行时遇到了问题)。
-
在我的开发机器(IIS7.5,不是 Cassini)和 beta (IIS6) 上通过 IIS 提供服务时会发生这种情况
-
代表消失了。对不起各位。如果我得到一个甜蜜的答案,我会开始另一个赏金并奖励给你
标签: asp.net-mvc-2 asp.net-4.0 tempdata