每次访问都会显示一次警报

时间:2015-03-17 19:05:00

标签: javascript asp.net-mvc razor

我正在研究如果用户第一次访问网站时如何显示提醒消息。消息应该在每个页面上都可见,直到按下关闭按钮。我把代码放在_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">&times;</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;]未设置。

2 个答案:

答案 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">&times;</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中的欢迎提醒。在此次访问期间,他们下次访问着陆页时,会话在页面加载时更改为“是”,并且他们再次看不到警报。