SQL Select语句在ASP.NET中返回Null引用错误

我在视图中查看项目的特定类别。我希望它在单击时查看该类别下的所有产品,但出现空引用异常。对于类别和产品,我有单独的表格。

这是我尝试过的。 查看代码:

@model IEnumerable<OpabidFarmsLtd.Models.ViewModels.Shop.CategoryVM>

<h3>Categories</h3>

<ul>
<li><a href="#">All</a></li>
@foreach (var item in Model)
{
    <li><a href="/shop/category/@item.Slug.ToLower()">@item.Name</a></li>
}
 </ul>

还有我的控制器(ShopController):

public actionResult Category(string name)
    {
        // Declare a list of Productvm
        List<Productvm> productvmList;


        using (Db db = new Db())
        {
            // Get category id
            CategoryDTO categoryDTO = db.Categories.Where(x => x.Slug == name).FirstOrDefault();
            int catId = categoryDTO.Id;

            // Init the list
            productvmList = db.Procucts.ToArray().Where(x => x.CategoryId == catId).Select(x => new Productvm(x))
                .ToList();

            // Get category name
            var productCat = db.Procucts.Where(x => x.CategoryId == catId).FirstOrDefault();
            ViewBag.CategoryName = productCat.CategoryName;
        }

        // Return view with list
        return View(productvmList);
    }

Error Message Screenshot

编辑: 在寻找错误的原因时,我发现Category方法根本没有得到参数,我注释了其中的所有代码并执行了以下操作:

 public actionResult Category(string name)
    {
        string cat;
        using (Db db = new Db())
        {
            CategoryDTO dto = db.Categories.Where(x => x.Slug == "test-category").FirstOrDefault();
            cat = dto.Id.ToString();
        }

        return Content(name + cat);
    }

它仅返回8,这是数据库中的ID。我知道为什么它会给我null,这是因为它从未收到任何参数,然后默认为null。我现在不知道的是为什么参数没有从上面的代码中到达那里。请帮忙,我是这个框架的新手。

duxinaa 回答:SQL Select语句在ASP.NET中返回Null引用错误

您尝试发送“ productVMList”进行查看,但是您将categoryVM模型添加到html页面。我认为您应该发送“ categoryVMList”而不是“ productVMList”,或者应该将productVM添加到视图中。喜欢;

@model IEnumerable<OpabidFarmsLtd.Models.ViewModels.Shop.ProductVM>

此外,您还应该使用.Add将新项目添加到列表中。例如,

ProductVMList.Add(object)

否则,将断点置于return View(ProductVMList)并检查列表是否为空或已填充。

本文链接:https://www.f2er.com/3143528.html

大家都在问