9

私はコントローラーで次のように一時データを使用しています-問題がある場合は非常に簡単です:

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

次に、すべてのページで、次のようなユーザーコントロールがあります。

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

問題は、tempdataにエラーを追加すると、最初のリクエストで正しく表示されますが、次のリクエストでも再び表示されることです。これは明らかに非常に紛らわしく、望ましい動作ではありません。

私はIoCを使用していません。それを使用したときに、同じ問題のある投稿が表示されました。

4

2 に答える 2

23

TempDataの唯一の目的は、次の要求まで保持することです。代わりに、次のリクエストが ViewData に入るまで保持したくないもの。

現実的には、TempData はリダイレクト時にのみ安全に使用できることを意味します。リダイレクトしない場合、「次のリクエスト」は何でもかまいません。

于 2009-01-23T16:34:46.613 に答える
0

これは受け入れられますか (表示されたらエラーを削除します):

<%  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
%>
于 2009-01-23T16:35:19.733 に答える