ASP NET MVC 包含双重我的观点
Posted
技术标签:
【中文标题】ASP NET MVC 包含双重我的观点【英文标题】:ASP NET MVC Include double my view 【发布时间】:2015-12-03 21:15:56 【问题描述】:我有一个小问题,不知道如何解决。
当我在视图和控制器中写入时:
@html.DisplayFor(modelItem => item.Category.Name)
return View(db.Product.Include(p=>p.Category).OrderByDescending(a => a.ProductID).Where(c => c.ClientID == clientid).ToList());
会发生这种情况:
当我将其更改为:
@Html.DisplayFor(modelItem => item.CategoryID)
return View(db.Product.OrderByDescending(a => a.ProductID).Where(c => c.ClientID == clientid).ToList());
会发生这种情况:
所以一切正常,但它不显示类别名称。我该如何解决?
编辑1:
public partial class Product
public int ID get; set;
public int ProductID get; set;
public string Name get; set;
public int CategoryID get; set;
public decimal Price get; set;
public int Promotion get; set;
public string Image1 get; set;
public string Image2 get; set;
public string Image3 get; set;
public string Image4 get; set;
public string Description get; set;
public int ClientID get; set;
public virtual Category Category get; set;
public virtual Client Client get; set;
【问题讨论】:
【参考方案1】:将 GroupBy 添加到您的表达式中。更改
View(db.Product.Include(p=>p.Category).OrderByDescending(a => a.ProductID).Where(c => c.ClientID == clientid).ToList());
到
View(db.Product.Include(p=>p.Category).OrderByDescending(a => a.ProductID).Where(c => c.ClientID == clientid).GroupBy(P => P.ProductID).ToList())
【讨论】:
在 OrderByDescending 上出现此错误:“IGrouping1[System.Linq.IGrouping
2[System.Int32,AMBIT_CMS_MVC.Areas.Admin.Models.Product]]”,但是这个字典需要“System.Collections.Generic.IEnumerable`1[AMBIT_CMS_MVC.Areas.Admin.Models.Product]”类型的模型项。
当您尝试使用 wirte "GroupBy(P => P." 时,您是否拥有智能感知的“ProductID”?
你的模型是什么?
@model IEnumerable【参考方案2】:
在我看来,出于某种原因,您会得到多个相同的项目。您可以通过这种方式获取不同的项目:
var results = db.Product
.Include(p=>p.Category)
.OrderByDescending(a => a.ProductID)
.Where(c => c.ClientID == clientid)
.Distinct()
.ToList());
return View(results);
但更好的是调查为什么您会得到多个相同的项目。在这种情况下,删除Distinct()
子句并在最后一条语句上放置一个断点。接下来,检查结果。必须有一个属性使 Id = 4 的第一项与 Id 为 4 的第二项不同。
【讨论】:
不知道。它通常保存在数据库中 - 只有一项。而你的答案只是混合它。 混合?你什么意思?您可以将Product
类添加到问题中吗?
也有加倍的商品,但只有按ID排序是混用的。以上是关于ASP NET MVC 包含双重我的观点的主要内容,如果未能解决你的问题,请参考以下文章