Pergunta

Eu estou usando dados temporários como segue em meus controladores - muito simples, quando há um problema:

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

Em seguida, em cada página eu tenho um controle de usuário da seguinte maneira:

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

O problema é quando eu tenho um erro adicionado ao TempData ele aparece corretamente na primeira solicitação, mas também mostra-se novamente no próximo pedido, bem como -. O que é obviamente muito confuso e não um comportamento desejado

Eu não estou usando qualquer IoC, eu vi o post com os mesmos problemas quando se usa isso.

Foi útil?

Solução

O único propósito de TempData é persistir até o próximo pedido. Coisas que você não quer persistir até a próxima solicitação deve entrar em ViewData, em vez disso.

Na realidade, isso significa que TempData só é segura para usar quando redirecionando. Quando não está redirecionando, o "próximo pedido" poderia ser qualquer coisa.

Outras dicas

isso seria aceitável (removendo o erro uma vez que foi 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top