2017-03-30 3 views
0

私はMVC 5 ViewBagを使用してオペレーター '!'タイプのオペランドに適用することができない "<null>

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

をやろうとしているが、エラーを取得しています:

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

このような場合は、 'ViewData'や' ViewBag'の代わりに強い型のモデルを使うことをお勧めします。代わりに '@if(ViewBag.UserLoggedIn == null){...}' –

+0

も参照してください: "[ViewBag vs Model、MVC.NET](http://stackoverflow.com/q/21716953/107625)" –

+0

ページの更新によってビューバックのデータがクリアされる可能性があります。セッションを使用する必要があります。ちょうどアドバイス –

答えて

1

if文であなただけtrueを持つことができますまたはfalse(基本的にはboolean)ですが、設定されていない場合はViewBagにはプロパティUserLoggedInが存在しないため、nullになります。したがって、ViewBag.UserLoggedInは、nullまたはstringとなる可能性があります。 if文で使用するには、文字列(これはnullでも可)をブール値にキャストする必要があります。このような何かが動作します:あなたが唯一のそれはcomparable.Soはあなたがそれをやりたいいけないブール variable.Ifを渡すことを確認している場合、その後、あなたがUserLogout()を行うことをお勧めします!演算子を使用することができます

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

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

をここではUserLoggedIn == nullです。

関連する問題