Я создаю магазин с ASP.NET 4.0 MVC и C # и довольно плохо знаком с ним.
Я пришел к созданию страницы просмотра, на которой отображаются товары определенной категории.
На странице конкретной категории я хочу иметь список продуктов, а также хочу, чтобы название категории с соответствующим описанием было взято из базы данных.
В настоящее время я сделал так, чтобы в моем репозитории было два метода:
- Получить список товаров для определенной категории со строкой
- Получить определенную категорию с помощью строки
Затем я использую оба из них в одном ActionResult и затем передаю их в представление.
Есть ли способ, с помощью которого я могу получить список продуктов и название категории, описание и т. Д. Из 1 вызова метода в базу данных или я правильно сделал?
Спасибо за любую помощь заранее.
Мой код выглядит следующим образом:
StoreRepository
public class StoreRepository : topsports.Models.IStoreRepository
{
private topsportsEntities db = new topsportsEntities();
public IQueryable<Product> FindProductsByCategory(string c)
{
var products = from p in db.Products
where p.Category.Name == c
select p;
return products;
}
public Category FindCategory(string c)
{
return db.Categories.SingleOrDefault(cg => cg.Name == c);
}
}
IStoreRepository
public interface IStoreRepository
{
IQueryable<Product> FindProductsByCategory(string c);
Category FindCategory(string c);
}
StoreController
public class StoreController : Controller
{
IStoreRepository storeRepository;
public StoreController()
: this(new StoreRepository())
{
}
public StoreController(IStoreRepository repository)
{
storeRepository = repository;
}
public ActionResult Index(string c)
{
var category = storeRepository.FindCategory(c);
var products = storeRepository.FindProductsByCategory(c).ToList();
var viewModel = new StoreViewModel
{
Products = products,
Category = category
};
return View(viewModel);
}
}
StoreViewModel
public class StoreViewModel
{
public List<Product> Products { get; set; }
public Category Category { get; set; }
}
Category.aspx
<h2><%: Model.Category.Name %></h2>
<p><%: Model.Category.Description %></p>
<ul>
<% foreach (var item in Model.Products) { %>
<li>
<%: item.Name %>,
<strong><%: item.Description %></strong>
</li>
<%} %>
</ul>