【问题标题】:Questions about ASP.NET Core MVC Null Exception error handling关于 ASP.NET Core MVC Null Exception 错误处理的问题
【发布时间】:2021-06-29 00:53:11
【问题描述】:

我正在使用 Entity Framework Core。一切正常,我可以在数据库中创建、更新和删除记录,但在视图中显示项目除外。

我查看了验证检查,因此没有记录具有 NULL 值。

display.cshtml:

@model IEnumerable<WebAppReview.Models.ItemReview>

@if (Model.Count() > 0)
   ... some code ...

@if (Model != null)
   ... some code ...

条件不断抛出此错误:

ArgumentNullException:值不能为空。 (参数“来源”) System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument 参数)

问题:这个错误的根本原因是什么?

  1. 是不是因为我检查null的方式不对?

  2. 是连接字符串吗?但我可以创建、更新和删除数据库中的项目。所以应该没问题...

  3. 用数据库数据“强制”填充“模型”的正确方法是什么?

请帮忙!

【问题讨论】:

  • 那是因为你的模型是空的,所以Model.Count() &gt; 0语句总是会抛出这样的异常。
  • 嗨@LilMeru,我的回答是否帮助您解决了您的问题?如果可以,请您接受作为答案吗?如果没有,请您跟进让我知道吗?参考:How to accept as answer .谢谢。

标签: exception null entity-framework-core asp.net-core-mvc


【解决方案1】:

那是因为你的模型是空的,所以Model.Count() &gt; 0语句总是会抛出这样的异常,所以你需要先判断模型是否为空。

如下改变:

@if (Model!=null && Model.Count() > 0)
{
    //do your stuff...
}

@if (Model != null)
{    
    //do your stuff...      
}

不确定你的真实场景是什么,但是这两个语句是相似的,似乎区别在于count是否等于0。如果Model.Count==0,上面的语句将显示两个代码示例。如果你想区分这两个语句,我认为您需要进行如下更改:

@if (Model!=null && Model.Count() > 0)
{
    //do your stuff...
}

@if (Model != null && Model.Count()== 0)
{    
    //do your stuff...      
}

【讨论】:

    【解决方案2】:
     @if ( Model != null && Model.Count() > 0 ){
               //do your stuff...
     }
     else{
              //do your stuff...
     }
    

    这种安排适合我。

    在开始时进行 Null 检查。

    但在这种情况下,可能你没有在控制器中调用模型

    检查这个例子,这是正确的方法:-

      public IActionResult Index()
        {
            IEnumerable<YourModel> objList = _db.yourModel;
            return View(objList);
            //   return View();
        }
    

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 2021-03-31
      • 2010-09-28
      • 1970-01-01
      • 2010-09-16
      • 2018-02-27
      • 1970-01-01
      • 2020-10-31
      • 2021-05-25
      相关资源
      最近更新 更多