TempData を使用してユーザーにメッセージを表示しています。文字列を TempData に入れ、後でその文字列を読み取り、それが空でない場合は、メッセージを含む DIV を表示します。
すべて正常に動作し、ユーザーがページを更新してもメッセージは表示されません (これが私の望みです)。問題は、ユーザーが他のページに移動してブラウザの戻るボタンを押すと、メッセージが再び表示されることです。これは望ましくありません。
この動作を回避するにはどうすればよいですか?
ありがとう。
これは、TempData (Razor + VB) を読み取るために使用するコードです。DIV #commonMessage があります。このコードでは、文字列を div 内に配置して表示します。前に言ったように、それは機能していますが、唯一の問題は、ユーザーがブラウザーでクリックして戻ると、TempData がまだそこにあることです。
@If Not IsNothing(TempData("MessageUser")) AndAlso TempData("MessageUser") <> String.Empty Then
Dim str As String = TempData("MessageUser")
@<script type="text/javascript">
$(document).ready(function () {
$('#commonMessage').html("@str");
$('#commonMessage').delay(400).slideDown(400).delay(4000).slideUp(400);
})
</script>
End If
編集: TempData がキャッチされているようです。なぜなら、メッセージを表示しているアクションのキャッシュを無効にすると (属性を使用してSystem.Web.Mvc.OutputCache(NoStore:=True, Duration:=0, VaryByParam:="*")
)、問題が消えるからです。しかし、キャッシュを無効にする必要のない方法を見つけることができればよいのですが...
要求された編集: 私は ASP では非常に初心者なので、何をしようとしているのかを明確にしようとしています。ユーザーがアクション (たとえば、クライアントの編集) を実行すると、クライアントをクライアント リスト ページにリダイレクトし、ユーザーに「クライアント データが更新されました」というメッセージを表示します。メッセージが一度だけ表示されるようにしようとしています。おそらく、TempData は正しい方法ではありません (私はまだ学習しているのでわかりません) が、ターゲットはユーザーにメッセージを 1 回だけ表示することです (urser が更新された場合でも、ユーザーがアクセスした場合でも)。他のページを開き、ブラウザで押し戻します)... TempData を使用するか、目的により適したものを使用します。