C# 检查system.nullreferenceexception

C# 检查system.nullreferenceexception,c#,asp.net-mvc,exception,C#,Asp.net Mvc,Exception,我的代码如下: @{var UName = ((IEnumerable<Pollidut.ViewModels.ComboItem>)ViewBag.UnionList).FirstOrDefault(x => x.ID == item.UNION_NAME_ID).Name;<text>@UName</text> @{var UName=((IEnumerable)ViewBag.UnionList).FirstOrDefault(x=>x.ID==

我的代码如下:

@{var UName = ((IEnumerable<Pollidut.ViewModels.ComboItem>)ViewBag.UnionList).FirstOrDefault(x => x.ID == item.UNION_NAME_ID).Name;<text>@UName</text>
@{var UName=((IEnumerable)ViewBag.UnionList).FirstOrDefault(x=>x.ID==item.UNION\u NAME\u ID).NAME;@UName

如果ViewBag.UnionList为空,则会导致system.nullreferenceexception失败。如何检查和验证此错误?

好的,您正在调用
FirstOrDefault
——如果序列为空,则返回null(或者更确切地说,元素类型的默认值)。因此,您可以使用单独的语句检测此错误:

@{var sequence = (IEnumerable<Pollidut.ViewModels.ComboItem>)ViewBag.UnionList;
  var first = sequence.FirstOrDefault(x => x.ID == item.UNION_NAME_ID); 
  var name = first == null ? "Some default name" : first.Name; }
<text>@UName</text>

(这里有一点不同-如果
Name
返回null,那么在后一个代码中,您将使用默认名称;在前一个代码中,您不会使用默认名称。)

那么,您调用的是
FirstOrDefault
-返回null(或者更确切地说,是元素类型的默认值)如果序列为空,则可以使用单独的语句检测:

@{var sequence = (IEnumerable<Pollidut.ViewModels.ComboItem>)ViewBag.UnionList;
  var first = sequence.FirstOrDefault(x => x.ID == item.UNION_NAME_ID); 
  var name = first == null ? "Some default name" : first.Name; }
<text>@UName</text>

(这里有一点不同-如果
Name
返回null,那么在后一个代码中,您将使用默认名称;在前一个代码中,您不会使用默认名称。)

那么,您调用的是
FirstOrDefault
-返回null(或者更确切地说,是元素类型的默认值)如果序列为空,则可以使用单独的语句检测:

@{var sequence = (IEnumerable<Pollidut.ViewModels.ComboItem>)ViewBag.UnionList;
  var first = sequence.FirstOrDefault(x => x.ID == item.UNION_NAME_ID); 
  var name = first == null ? "Some default name" : first.Name; }
<text>@UName</text>

(这里有一点不同-如果
Name
返回null,那么在后一个代码中,您将使用默认名称;在前一个代码中,您不会使用默认名称。)

那么,您调用的是
FirstOrDefault
-返回null(或者更确切地说,是元素类型的默认值)如果序列为空,则可以使用单独的语句检测:

@{var sequence = (IEnumerable<Pollidut.ViewModels.ComboItem>)ViewBag.UnionList;
  var first = sequence.FirstOrDefault(x => x.ID == item.UNION_NAME_ID); 
  var name = first == null ? "Some default name" : first.Name; }
<text>@UName</text>

(这里有一点不同-如果
Name
返回null,则在后一个代码中,您将以默认名称结束;在前一个代码中,您不会。)

首先,您不应该在视图中执行此类工作。它属于控制器。因此,cshtml应该是:

<text>@ViewBag.UName</text>

首先,您不应该在视图中执行此类工作。它属于控制器。因此cshtml应该是:

<text>@ViewBag.UName</text>

首先,您不应该在视图中执行此类工作。它属于控制器。因此cshtml应该是:

<text>@ViewBag.UName</text>

首先,您不应该在视图中执行此类工作。它属于控制器。因此cshtml应该是:

<text>@ViewBag.UName</text>

只需检查它是否为空,然后检查它是否为空,然后检查它是否为空,然后检查它是否为空,然后检查它是否为空,然后执行操作