我正在研究如果用户第一次访问网站时如何显示提醒消息。消息应该在每个页面上都可见,直到按下关闭按钮。我把代码放在_Layout.cshtml中,但它不起作用我想要。
你能指出我的错误吗?
@if(Session["Alert"] != "Confirmed")
{
<div id="myAlert" class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Warning!</strong> Better check yourself, you're not looking too good.
</div>
}
<script type="text/javascript">
$(document).ready(function () {
$("#myAlert").on('closed.bs.alert', function () {
sessionStorage.Alert = "Confirmed";
});
});
</script>
每次重新加载站点/页面时都会显示警报。当按下警告关闭按钮时,看起来好像没有执行脚本。此外,会话[&#34;警报&#34;]未设置。
答案 0 :(得分:0)
sessionStorage
和服务器端Session
不是一回事!您无法将值设置为sessionStorage
,并希望从服务器端Session
获取值。所以你有两个选择:
<强> 1。使用服务器端Session
更改您的javascript代码,以便向mvc操作发送ajax请求,然后将Session["Alert"]
设置为&#34;已确认&#34;那里。
<强> 2。使用sessionStorage
不是使用@if(Session["Alert"] != "Confirmed")
,而是检查文档上的sessionStorage
,以决定是否显示提醒。
第二个需要最少的代码才能更改。以下代码将起作用:
<div id="myAlert" style="display:none" class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Warning!</strong> Better check yourself, you're not looking too good.
</div>
<script type="text/javascript">
$(document).ready(function () {
$(document).ready(function () {
// If not 'Confirmed', show #myAlert
if (sessionStorage.Alert !== 'Confirmed') {
$('#myAlert').show();
}
});
$('#myAlert .close').click(function () {
// Set 'Alert' to 'Confirmed' when user click the close button
sessionStorage.Alert = "Confirmed";
$(this).closest('#myAlert').hide();
});
});
</script>
答案 1 :(得分:0)
在Page_Load子后面的代码中,我设置了会话变量:
If IsNothing(Session("visit")) Then
Session("visit") = "no"
Else
Session("visit") = "yes"
End If
在body标签中,我发出了一个onload事件:
的onload =&#34; showAlert();&#34;
然后我添加了这个小的javascript函数:
function showAlert() {
var visit = '<%= Session("visit")%>';
if (visit == 'no') {
document.getElementById('id01').style.display = 'block';
}
}
当访问者第一次访问我的目标网页时,他们会看到我已保存在ID =&#39; id01&#39;的div中的欢迎提醒。在此次访问期间,他们下次访问着陆页时,会话在页面加载时更改为“是”,并且他们再次看不到警报。