문제

컨트롤러에서 다음과 같이 임시 데이터를 사용하고 있습니다. 문제가있을 때 매우 간단합니다.

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
%>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top