Я просматриваю конкретную категорию товара в представлении. Я хочу, чтобы при нажатии на нее просматривались все товары этой категории, но я получаю исключение нулевой ссылки. У меня есть отдельные таблицы для категории и продуктов.
Вот что я пробовал. Видимый код:
@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, что было идентификатором из базы данных. Я знаю, почему он давал мне ноль, потому что он никогда не получал никаких параметров, а по умолчанию - нольЧто я не могу понять сейчас, так это того, почему параметр не попадает туда из моего кода выше. Пожалуйста, помогите, я новичок в этой структуре.