接线员'!'不能应用于'<null>类型的操作数

时间:2017-03-30 01:29:53

标签: javascript asp.net-mvc operator-keyword viewbag

我正在使用MVC 5 ViewBag并尝试执行

@if (!ViewBag.UserLoggedIn) {
   <a onclick="javascript:UserSessionManager.UserLogout()">LogOut</a>
}

但收到错误:

Operator '!' cannot be applied to operand of type '<null>'

2 个答案:

答案 0 :(得分:1)

在if语句中,您基本上只能拥有truefalseboolean),但UserLoggedIn上的属性ViewBag不存在如果它没有设置,那么将为null。因此ViewBag.UserLoggedIn可以是nullstring。您必须将字符串(也可以是null)强制转换为布尔值,以便在if语句中使用它。这样的事情会起作用:

@{
    bool isUserLoggedIn = ViewBag.UserLoggedIn ?? false;
}

@if (!isUserLoggedIn) {
   <a onclick="javascript:UserSessionManager.UserLogout()">LogOut</a>
}

答案 1 :(得分:0)

如果它是可比较的,你只能使用!运算符。所以确保你传递布尔变量。如果你不想这样做,那么你可能想做{{ 1}} UserLogout()