我在视图中查看项目的特定类别。我希望它在单击时查看该类别下的所有产品,但出现空引用异常。对于类别和产品,我有单独的表格。
这是我尝试过的。 查看代码:
@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);
}
编辑: 在寻找错误的原因时,我发现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。我现在不知道的是为什么参数没有从上面的代码中到达那里。请帮忙,我是这个框架的新手。