vista una pasar net mvc example datos data controlador asp asp.net-mvc tempdata

asp.net-mvc - una - viewbag in view mvc



ASP.NET TempData persiste entre las solicitudes (2)

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 aparece un error agregado a tempdata, aparece correctamente en la primera solicitud, pero también aparece nuevamente en la próxima solicitud, lo que obviamente es muy confuso y no es un comportamiento deseado.

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


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

De forma realista, esto significa que TempData solo es seguro de usar al redirigir. Cuando no se redirecciona, la "siguiente solicitud" podría ser cualquier cosa.


esto sería 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 %>