billy_56
billy_56

Reputation: 679

How to fix ' Cannot perform runtime binding on a null reference"

I'm working on MVC project and I'm looping some values, and sometimes ome of those values is null:

enter image description here

What can I write and how can I write ?? operator or whatever in case @Item.User_class.User1.Nickname is null to set some default values.

Code:

@foreach (var item in ViewBag.nextClassesList)
{ 
    <tr class="@item.Status">
        <td>@item.ClassDate</td>
        <td>@item.User_Class.User1.NickName ? @item.User_Class.User.NickName   </td>
        <td>@item.User_Class.ClassType.ClassTypeName.Name (@item.User_Class.ClassType.ClassTypeName.Time min)</td>
    </tr>
}

So this line is problem:

<td>@item.User_Class.User1.NickName ? @item.User_Class.User.NickName   </td>


<td>@item.User_Class.User1.NickName </td> Is null sometimes...

Upvotes: 1

Views: 11070

Answers (2)

Fran
Fran

Reputation: 6520

For every property that is an object under your @item, you need to perform null checks down to a simple property level

(@item.User_Class == null) ? string.Empty : (@item.User_Class.User1 == null) ? (@item.User_Class.User == null) ? string.Empty : @item.User_Class.User.NickName :  @item.User_Class.User1.NickName 

you need to also check the User object as well as it could also be null.

(@item.User_Class == null) ? string.Empty : (@item.User_Class.ClassTypeName == null) ? string.Empty : @item.User_Class.ClassTypeName.Name

so in your example

@foreach (var item in ViewBag.nextClassesList)
{ 
    <tr class="@item.Status">
        <td>@item.ClassDate</td>
        <td>(@item.User_Class == null) ? string.Empty : (@item.User_Class.User1 == null) ? (@item.User_Class.User == null) ? string.Empty : @item.User_Class.User.NickName :  @item.User_Class.User1.NickName</td>
...
}

Syntax may be a little off, but you get the idea.

Upvotes: 1

ashish
ashish

Reputation: 2358

You can use the null conditional ,available in C# version 6.0 and above:

@item?.User_Class?.ClassTypeName?.Name

Upvotes: 1

Related Questions