检查Model是否为空

时间:2017-07-08 17:57:39

标签: asp.net asp.net-mvc linq asp.net-mvc-4

我正在进行下面的查询以获取要查看的数据,但AccountMediaServerKey表是否为空。模型在视图中抛出null异常错误。知道如何在没有数据从数据库中提取时检查模型是否为空

var MediaKey = (from p in db.AccountMediaServerKey
                where p.Tagger == USID && p.TagTo == USID
                select new MediaServerHomeModel
                {                                 
                    Stream=p.Stream,
                    Event = p.Event,
                    Status = p.Status

                }).FirstOrDefault();

3 个答案:

答案 0 :(得分:0)

你只需要做

If(MediaKey==null) 
{ 
   //do something
}

或者,如果你想在null时设置一个新对象,那么你会做

var obj  = MediaKey ?? new MediaServerHomeModel();

返回obj查看

答案 1 :(得分:0)

方法FirstOrDefault返回集合中的第一项或NULL。因此,如果您的表为空,则变量MediaKey将具有NULL值。如果要将其传递给视图,请确保在访问任何属性之前进行空检查。

@model MediaServerHomeModel
<h1>Index</h1>
@if(Model!=null)
{
  <p>Model is not null</p>
  <!-- Access Model safely now -->
}

您必须对其他引用类型属性执行相同操作以防止空引用异常。例如,如果Stream属性是引用类型,则它可能为null。因此,在使用它之前进行空检查是安全的。

@if(Model!=null && Model.Stream!=null)
{
  <p>Model.Stream is not null</p>
  <!-- Access Model.Stream safely now -->
}

答案 2 :(得分:0)

你有2种方法 首先检查你的查询是否为null

if (MediaKey == null)
{
 //do some thing
}

或者你可以在查询之前检查它,如下所示:

没有过滤:

if(db.AccountMediaServerKey.Any())
 {

 }

带过滤:

if(db.AccountMediaServerKey.Any(p=> p.Tagger == USID && p.TagTo == USID))
 {

 }