我有两个表 General_Info 和 Quantity。General_Info 有一个主键 QuoteID,并且与 Quantity 有一对多的关系 (FK = General_InfoQuotesID)。在我的详细信息视图中,我想显示 General_Info 中的特定行以及 Quantity 中的所有数据,其中 General_Info 中的 QuoteID 等于 General_InfoQuotesID。我目前对此的尝试设置了一个详细信息视图,以显示来自 General_Info 的指定行数据,并带有一个包含数量的部分视图。我遇到的问题是,它没有显示对应于 General_Info 中给定行的数量,而是只显示曾经添加的所有额外数量,而不管它对应的 General_Info 中的行如何。
这是我的模型类:
public partial class General_Info
{
public General_Info()
{
this.Quantities = new HashSet<Quantity>();
}
public int QuoteID {get; set;}
public System.DateTime Open_Quote {get; set;}
public string Customer_Name {get; set;}
...
public virtual ICollection<Quantity> Quantities {get; set;}
}
public partial class Quantity
{
public int QuantityID {get; set;}
public int AdditionalQty {get; set;}
public int General_InfoQuotesID {get; set;} //fk
//navigation property
public virtual General_Info General_Info {get; set;}
}
然后这是我的一些控制器:
[HttpGet]
public ActionResult Details(int id = 0)
{
General_Info general_info = unitOfWork.General_Info_Repository.GetByID(id);
return View(general_info);
}
[HttpGet]
[ChildActionOnly]
public ActionResult DQuantities()
{
IEnumerable<Quantity>quantities = unitOfWork.Quantity_Repository.Get();
// from quantities, select additionalQty when
// General_Info.PK == Quantities.FK
var qtys = from q in quantities
where q.General_Info.QuoteID == q.General_InfoQuotesID
select q.AdditionalQty;
我不认为这行是对的,但是我在尝试将 linq 语句直接加载到局部视图中后尝试了它不起作用
qtys = qtys.ToList();
return PartialView(qtys);
}
然后在我的 DQuantities 视图中(我没有包含详细信息视图,因为它已经正常工作,而且我认为这不是问题所在)
@model IEnumerable<SourceMvc.Quantity>
<table>
<tr>
<th>
Additional Quantities:
</th>
</tr>
很确定这个 foreach 语句只是针对来自 IEnumerable 的实际表数据,这就是为什么它打印所有数量而不是针对我的 linq 语句拾取的数据
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.AdditionalQty)
</td>
</tr>
}
</table>
提前感谢任何可以提供帮助的人。