9

我在我的控制器中使用如下临时数据 - 非常简单,当出现问题时:

TempData("StatusMessage") = "You have no items set to Auto-Ship."

然后在每个页面上,我都有一个用户控件,如下所示:

<div class="error-container">
<%  If TempData.ContainsKey("ErrorMessage") Then%>
<script> $('div.error-container').show();</script>
<div class="msg-error"><p><%=TempData("ErrorMessage") %></p></div>
<% End If%>
<%  If TempData.ContainsKey("StatusMessage") Then%>
<script> $('div.error-container').show();</script>
<div class="msg-status"><p><%=TempData("StatusMessage")%></p></div>
<% End If%>
<ul></ul>
</div>

问题是,当我确实将错误添加到 tempdata 时,它会在第一个请求中正确显示,但在下一个请求中也会再次显示 - 这显然非常令人困惑,而不是理想的行为。

我没有使用任何 IoC,我确实在使用它时看到了同样问题的帖子。

4

2 回答 2

23

TempData的唯一目的是持续到下一个请求。取而代之的是,在下一个请求进入 ViewData 之前,您不想保留的东西。

实际上,这意味着 TempData 只有在重定向时才能安全使用。当不重定向时,“下一个请求”可以是任何东西。

于 2009-01-23T16:34:46.613 回答
0

这是否可以接受(一旦显示错误就删除):

<%  If TempData.ContainsKey("ErrorMessage") Then %>
<script> $('div.error-container').show();</script>
<div class="msg-error"><p><%=TempData("ErrorMessage") %></p></div>
<% 
    TempData.Remove("ErrorMessage")
End If
%>
于 2009-01-23T16:35:19.733 回答