Pregunta

Estoy usando datos temporales de la siguiente manera en mis controladores, muy simple, cuando hay un problema:

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

Luego, en cada página tengo un control de usuario de la siguiente manera:

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

El problema es que cuando tengo un error agregado a tempdata, aparece correctamente en la primera solicitud, pero TAMBIÉN aparece nuevamente en la siguiente solicitud, lo que obviamente es muy confuso y no es un comportamiento deseado.

No estoy usando ninguna IoC, vi la publicación con los mismos problemas al usarla.

¿Fue útil?

Solución

El único propósito de TempData es persistir hasta la próxima solicitud. Cosas que no desea persistir hasta que la siguiente solicitud vaya a ViewData, en su lugar.

Siendo realistas, esto significa que TempData solo es seguro de usar cuando se redirecciona. Cuando no se redirige, la "siguiente solicitud" podría ser cualquier cosa.

Otros consejos

sería esto aceptable (eliminando el error una vez que se ha mostrado):

<%  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
%>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top