Question

J'utilise les données temporaires comme suit dans mes contrôleurs - très simple, en cas de problème:

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

Ensuite, sur chaque page, j'ai un contrôle utilisateur comme suit:

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

Le problème, c’est que quand une erreur est ajoutée à tempdata, elle s’affiche correctement à la première requête mais ALSO apparaît également à la requête suivante - ce qui est évidemment très déroutant et ne constitue pas un comportement souhaité.

Je n'utilise aucun IoC, j'ai vu la publication avec les mêmes problèmes lorsque je l'utilisais.

Était-ce utile?

La solution

Le seul objectif de TempData est de persister jusqu'à la prochaine demande. Des informations que vous ne souhaitez pas conserver jusqu'à ce que la requête suivante soit transférée dans ViewData.

De manière réaliste, cela signifie que TempData est uniquement sûr à utiliser lors de la redirection. En l'absence de redirection, la " requête suivante " pourrait être n'importe quoi.

Autres conseils

cela serait-il acceptable (en supprimant l'erreur une fois qu'elle a été affichée):

<%  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
%>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top