【发布时间】:2019-02-26 21:37:18
【问题描述】:
首先我使用实体框架和mvc5 我有一个类别表和一个子类别表,我在子类别表中创建了 categoryid 的外键,我试图编写一个查询,将子类别表中的 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);
}
}
我认为我应该将查询 actionresult 放在 subcat 控制器中!
这是类别索引视图:
@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 时将我重定向到具有其 categoryid 的子猫
这是查询的视图:
@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; }
}
什么是最简单的解决方法??
【问题讨论】:
标签: c# linq model-view-controller