Frage

Ich bin mit temporären Daten wie in meinem Controller folgen - sehr einfach, wenn es ein Problem gibt:

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

Dann auf jeder Seite, die ich ein Benutzersteuer habe wie folgt:

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

Das Problem ist, wenn ich tue ein Fehler es ordnungsgemäß auf der ersten Anfrage zeigt bis TempData hinzugefügt, sondern zeigt auch wieder auf der nächsten Anforderung als auch -. Das ist natürlich sehr verwirrend ist und kein gewünschtes Verhalten

Ich bin jede IoC nicht verwenden, habe ich die Post mit den gleichen Problemen sehen, wenn diese verwendet wird.

War es hilfreich?

Lösung

Die alleinigen Zweck von TempData ist bis zur nächsten Anforderung bestehen bleiben. Stuff Sie wollen nicht anhalten, bis die nächste Anforderung in Viewdata gehen sollte, statt.

Realistisch betrachtet, bedeutet dies, dass TempData nur sicher zu verwenden ist, wenn Umleitung. Wenn nicht umgeleitet, die „nächste Anforderung“ könnte alles sein.

Andere Tipps

wäre dies akzeptabel sein (Entfernen der Fehler einmal gezeigt wurde):

<%  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
%>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top