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>
只需检查它是否为空,然后检查它是否为空,然后检查它是否为空,然后检查它是否为空,然后检查它是否为空,然后执行操作