Cześć
mam pytanie natury technicznej.
Mam widok główny w swojej aplikacji zawierający zdjęcia wybranych kategorii produktów. Chciałbym aby po kliknięciu w zdjęcie np. Pieczywa wyświetliły mi się wszystkie produkty z kategorii Pieczywo.
W widoku głównym na sztywno ustaliłem sobie new {Name="Pieczywo"}
<a href="@Url.Action("Index","Category", new {Name="Pieczywo"})">
<img class="img-responsive" src="~/Content/Images/Mainpage/Categories/pieczywo.jpg" alt="Pieczywo">
</a>
Zrobiłem sobie ViewModel do wyświetlania pol produktu.
Potem stworzyłem sobie CategoryController który posiada akcję Index przyjmującą parametr string categoryName
public ActionResult Index(string categoryName)
{
using (var db = new ApplicationDbContext())
{
var selectedcategory = db.ProductCategories.FirstOrDefault(c => c.Name == categoryName);
var q = db.Products.Where(x => x.Category.Contains(selectedcategory)).Select(r => new ProductDisplayViewModel()
{
Id = r.Id,
ProductName = r.ProductName,
ProductDescription = r.ProductDescription,
ProductPrice = r.PricePerUnit,
ProductQuantity = r.Quantity
});
return View(q.ToList());
}
return View();
}
Następnie widok do wyświetlania:
@model IEnumerable<SklepInternetowy.ViewModels.ProductDisplayViewModel>
@{
ViewBag.Title = "Produkty";
}
<h2>Produkty dla wybranej kategorii</h2>
<br />
<div>
<table class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Nazwa produktu</th>
<th>Opis produktu</th>
<th>Cena za sztuke</th>
<th>Ilość sztuk w magazynie</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.ProductName</td>
<td>@item.ProductDescription</td>
<td>@item.ProductPrice</td>
<td>@item.ProductQuantity</td>
</tr>
}
</tbody>
</table>
<br /><br /><br />
<br /><br /><br />
</div>
Nie działa mi to bo po kliknięciu w wybraną kategorię otrzymuję błąd:
The specified type member 'Quantity' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
Wiersz 24: });
Wiersz 25:
Wiersz 26: return View(q.ToList()); // tutaj podczas zwracania listy
Wiersz 27: }
Wiersz 28: return View();
Co robie zle? Jak sobie z tym poradzic?