Прежде всего я использую Entity Framework и mvc5. У меня есть таблица категорий и таблица подкатегорий, я сделал внешний ключ categoryid в таблице подкатегорий, и я пытаюсь составить запрос, который сравнивает categoryid в таблице подкатегорий сcategoryid в таблице категорий и поместите его в код, который, когда я нажимаю на категорию, я получаю подкатегории, которые имеют тот же самый идентификатор категории.
Вот таблицы в первую очередь:
public class Category
{
public Category()
{
SubCats = new HashSet<SubCat>();
}
public int Id { get; set; }
public string Description { get; set; }
[ForeignKey("SubCats")]
public int? SubCatId { get; set; }
public ICollection<SubCat> SubCats { get; set; }
}
public class SubCat
{
public int Id { get; set; }
public string Description { get; set; }
[ForeignKey("Category")]
public int CategoryId { get; set; }
public Category Category { get; set; }
}
Это код, который я написал в моем контроллере категорий:
public class CategoriesController : Controller
{
new ApplicationDbContext _context;
public CategoriesController()
{
_context = new ApplicationDbContext();
}
// GET: Categories
public ActionResult Index()
{
var category = _context.Categories.ToList();
var cat = new CategoryViewModel
{
Categories = category
};
return View(cat);
}
public ActionResult Query()
{
var category = _context.Categories.ToList();
var subcat = _context.SubCats.ToList();
var cats = new CatSubCatViewModel
{
Categories = category,
SubCats = subcat
};
return View(cats);
}
}
Я думаю, что я должен поместить результат действия запроса в контроллер субкадра!
это представление индекса категорий:
@model Ebart.ViewModels.CategoryViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Categories</h1>
<br/>
<ul>
@foreach (var category in Model.Categories)
{
<a href="http://localhost:51438/Categories/Query"><li>@category.Description</li></a>
}
</ul>
Я хочу, чтобы при нажатии на li здесь перенаправить меня на подкадры, у которых есть свой идентификатор категории
И это представление запроса:
@model Ebart.ViewModels.CatSubCatViewModel
@{
ViewBag.Title = "Query";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Sub-Categories</h2>
@{
var query =
from a in Model.Categories
from b in Model.SubCats
where b.CategoryId == a.Id
select b;
}
<ul>
@foreach (var c in query.Distinct())
{
<li>@c.Description</li>
}
</ul>
Да ия сделал просмотр моделей, которые содержат списки категорий и подкатегорий:
public class CategoryViewModel
{
public IEnumerable<Category> Categories { get; set; }
}
public class CatSubCatViewModel
{
public IEnumerable<Category> Categories { get; set; }
public IEnumerable<SubCat> SubCats { get; set; }
}
как проще всего это решить ??