我正在使用 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 不是正确的方法(我不知道,因为我还在学习),但目标是只向用户显示一次消息(无论用户是否刷新或用户去其他页面,然后在浏览器中按回)...使用 TempData 或使用更适合我们目的的东西。