ASP.NET TempData的请求之间仍然存在
-
19-08-2019 - |
题
我使用的临时数据,按照我的控制器 - 很简单的,当有一个问题:
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的,我没有看到后使用,当同样的问题。
解决方案
在唯一目的 TempData的是持续,直至下一个请求。东西,你不想坚持,直到下一个请求应该进入ViewData的,而不是。
实际上,这意味着TempData的是唯一安全重定向时使用。当不重定向,“下一个请求”可以是任何东西。
其他提示
将这个是可接受的(一旦它已经显示出除去错误):
<% 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
%>
不隶属于 StackOverflow