Domanda

Sto usando i dati temporanei come segue nei miei controller - molto semplice, quando c'è un problema:

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

Quindi su ogni pagina ho un controllo utente come segue:

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

Il problema è che quando ho aggiunto un errore a tempdata, questo si presenta correttamente sulla prima richiesta, ma compare anche sulla richiesta successiva, il che è ovviamente molto confuso e non un comportamento desiderato.

Non sto usando alcun IoC, ho visto il post con gli stessi problemi quando lo usavo.

È stato utile?

Soluzione

Il unico scopo di TempData è persistere fino alla prossima richiesta. Roba che non vuoi persistere fino a quando la richiesta successiva non dovrebbe andare in ViewData, invece.

Realisticamente, questo significa che TempData è sicuro da usare solo durante il reindirizzamento. Quando non si reindirizza, la "richiesta successiva" potrebbe essere qualsiasi cosa.

Altri suggerimenti

sarebbe accettabile (rimuovendo l'errore dopo che è stato mostrato):

<%  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
%>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top