ASP.NET TempDataはリクエスト間で持続します
-
19-08-2019 - |
質問
コントローラーで次のように一時データを使用しています-問題がある場合は非常に簡単です:
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を使用していません。それを使用すると、同じ問題のある投稿が表示されました。
解決
TempDataの唯一の目的は、次のリクエストまで持続することです。代わりに、次のリクエストがViewDataに送られるまで保持したくないもの。
現実的には、これはTempDataがリダイレクト時にのみ安全に使用できることを意味します。リダイレクトしない場合、<!> quot; next request <!> quot;何でも構いません。
他のヒント
これで問題ありません(表示されたらエラーを削除します):
<% 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
%>
所属していません StackOverflow