Asp.net mvc 如何使用Razor检查会话变量是否存在

Asp.net mvc 如何使用Razor检查会话变量是否存在,asp.net-mvc,razor,Asp.net Mvc,Razor,我想使用以下行检查会话变量是否存在: if (@Session["LoginAttempts"]!=null && (int)@Session["LoginAttempts"] > 3 && dto.Captcha.length == 0) { } 我在上收到错误的语法消息=null我想,您需要在会话之前丢失“@”,并在会话之前保留它,如果。我建议将Razor变量放入脚本块: @{ var loginAttemptsExceeded = ((in

我想使用以下行检查会话变量是否存在:

if (@Session["LoginAttempts"]!=null && (int)@Session["LoginAttempts"] > 3 && dto.Captcha.length == 0)
{

}

我在
上收到错误的语法消息=null

我想,您需要在
会话之前丢失“@”,并在
会话之前保留它,如果

我建议将Razor变量放入脚本块:

@{
    var loginAttemptsExceeded = ((int)Session["LoginAttempts"] > 3).ToString().ToLower();
}
然后在JavaScript中:

var loginAttemptsExceeded = @loginAttemptsExceeded;

if (loginAttemptsExceeded && dto.Captcha.length === 0)
{
    ....
}

但是您应该做的是为包含视图所需信息的视图返回强类型的
ViewModel

我不能这样做,因为
&&dto.Captcha.length==0
是javascript。问题中应该包括混合客户端和服务器端逻辑的事实,因为这会产生很大的不同。我更新了我的答案。您必须
ToString().ToLower()
loginatTestSexceeded
,以便JS可以将该值作为有效的JS bool读取。