为什么在检查 if(a!=null) 时出现 Null 错误

Why do I Get Null Error When Checking if(a!=null)

当我尝试 if (productVariantViewModels != null) returns 时出现空错误。我不明白为什么会这样? .net framework 4.6 一个cshtml页面

Edit.cshtml:

@{
ViewBag.Title = "Edit";

List<ProductVariantViewModel> productVariantViewModels = ViewBag.ProductVariantViewModels;
}

...
...
...

                               
 if (productVariantViewModels != null)
 {
     foreach (var item in productVariantViewModels)
     {

        ...

     }
 }
   

还有 ProductVariantViewModel:

   public class ProductVariantViewModel
{
    public Products Product { get; set; }
    public string VariantName { get; set; }
    public Variant Variant { get; set; }
    public List<ProductAttribute> VariantAttributes { get; set; }
    public List<string> VariantValues { get; set; }


}

          

error img here

试试这个:

@{
    ViewBag.Title = "Edit";
    
    List<ProductVariantViewModel> productVariantViewModels = new List<ProductVariantViewModel>();
    productVariantViewModels = ViewBag.ProductVariantViewModels;
    }
    
    ...
    ...
    ...
    
                                   
     if (productVariantViewModels != null)
     {
         foreach (var item in productVariantViewModels)
         {
    
            ...
    
         }
     }

如果要将值放入列表中,它不会被初始化,因此 null。这导致了您的 Null 异常。

您必须先用 new List<ProductVariantViewModel>(value) 初始化列表。

并且您应该检查 ViewBagViewBag.ProductVariantViewModels 是否为 null

试试这个:

(ViewBag?.ProductVariantViewModels != null)
    List<ProductVariantViewModel> productVariantViewModels = List<ProductVariantViewModel>(ViewBag.ProductVariantViewModels);