如果会话中的对象存在,请检入javascript代码

时间:2017-08-18 15:04:14

标签: javascript asp.net asp.net-mvc

在View.cshtml中我有一个部分,我在其中检查会话中是否存在名为Reservation

的对象
<head>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryval")

    <script type="text/javascript">
        $(function () {
            if ( @Session["Reservation"] ) 
            {
                $('.reservationDetails :input').attr("disabled", false));
                $('#termSection :input').attr("disabled", true);
            }
        });
    </script>

</head>

第一次加载页面时,id为termSection的按钮处于活动状态, 但在其他操作中我保存对象保留在会话中此按钮仍处于活动状态,然后我重定向到View.cshtml。我认为问题在于检查来自sesssion的Object是否为空。

1 个答案:

答案 0 :(得分:1)

我建议你将if条件移到服务器端。如果预订不存在,则根本不渲染Javascript。

所以,而不是

if ( @Session["Reservation"] ) 

使用

@if ( Session["Reservation"] != null )

在上下文中:

@if ( Session["Reservation"] != null )
{
     $('.reservationDetails :input').attr("disabled", false));
     $('#termSection :input').attr("disabled", true);
}

如果Reservation不为null,则输出Javascript将为:

$(function () {
    $('.reservationDetails :input').attr("disabled", false));
    $('#termSection :input').attr("disabled", true);
}

如果Reservation为null,则输出Javascript为:

$(function () {
}

换句话说,它不会做任何事情,这似乎是意图。