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