Вопрос

Я использую временные данные, как указано в моих контроллерах - очень просто, когда есть проблема:

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>

Проблема в том, что когда у меня есть ошибка, добавленная к временным данным, она правильно отображается при первом запросе, но ТАКЖЕ снова появляется при следующем запросе - что, очевидно, очень запутанно и не является желаемым поведением.

Я не использую IoC, я видел сообщение с такими же проблемами при его использовании.

Это было полезно?

Решение

Единственной целью TempData является сохранение до следующего запроса. Материал, который вы не хотите сохранять до тех пор, пока следующий запрос не перейдет во ViewData.

На самом деле это означает, что TempData безопасно использовать только при перенаправлении. Когда нет перенаправления, & Quot; next request & Quot; может быть что угодно.

Другие советы

это будет приемлемо (устранение ошибки, как только она будет показана):

<%  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