我想显示使用单个子类别名称的产品,但是我正在获取序列包含多个元素错误。
子类别名称传递值来显示产品控制器的操作,如下所示
public ActionResult show(string subcategory)
{
if (subcategory == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var subcat = db.SubCategories.Include("Products").Single(s => s.SubCategoryName == subcategory);
if (subcat == null)
{
return HttpNotFound();
}
return View(subcat);
}
我有这样的菜单视图,
@model IEnumerable<mTest.Models.Category>
<div>
<ul>
@foreach (var category in Model)
{
<li class="active has-sub"><a href="#"><span>@category.CategoryName</span></a>
<ul>
@foreach (var subcategory in category.SubCategories)
{
<li class="has-sub"><a href="/Products/[email protected]"><span>@subcategory.SubCategoryName</span></a></li>
}
</ul>
</li>
}
</ul>
</div>
以及类别,子类别和产品型号,例如
public class Category
{
public Category()
{
Products = new HashSet<Product>();
SubCategories = new HashSet<SubCategory>();
}
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public virtual ICollection<SubCategory> SubCategories { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class SubCategory
{
public SubCategory()
{
Products = new HashSet<Product>();
}
public int SubCategoryId { get; set; }
public string SubCategoryName { get; set; }
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public int CategoryId { get; set; }
public int SubCategoryId { get; set; }
public virtual Category Category { get; set; }
public virtual SubCategory SubCategory { get; set; }
}
我有子类别的数据是这样的
|Computer=>HP
=>Lenovo
|Computer=>HP
=>Lenovo
|Mobile =>Samsung
=>Apple
|Mobile =>Samsung
=>Apple
如何解决这个问题。
var subcat = db.SubCategories.Include(“ Products”)。Single(s => s.SubCategoryName ==子类别);
如果在SubCategories
给定的中找到多个元素subcategory
,则由于Single
使用原因,上述语句将引发您提到的错误(序列包含多个元素)。因此Single
,请使用而不是使用FirstOrDefault
。因此,您的代码应如下所示。
var subcat = db.SubCategories.Include("Products").FirstOrDefault(s => s.SubCategoryName == subcategory);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句