当外键等于主键时在视图中显示数据
本文关键字:视图 显示 数据 于主键 | 更新日期: 2023-09-27 18:09:32
我有两个表General_Info和Quantity。General_Info有一个主键QuoteID,与Quantity (FK = General_InfoQuotesID)是一对多的关系。在我的详细信息视图中,我想显示General_Info中的特定行,其中包含来自Quantity的所有数据,其中来自General_Info的QuoteID等于General_InfoQuotesID。我目前的尝试是设置一个Details视图,以显示来自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);
}
然后在我的dquantity视图(我没有包括细节视图,因为它已经正常工作了,我不认为这是问题所在)
@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>
提前感谢任何可以帮助的人。
好了,我有一个可行的答案了。
在我的控制器中,我将dquantity更改为:
[HttpGet]
[ChildActionOnly]
public ActionResult DQuantities(int id = 0)
{
General_Info general_info = unitOfWork.General_Info_Repository.GetByID(id);
IEnumerable<Quantity> getQuantities = unitOfWork.Quantity_Repository.Get();
IEnumerable<Quantity> qtys = getQuantities.Where(q => q.General_InfoQuotesID == general_info.QuoteID);
return PartialView(qtys);
}
然后在我的局部视图中:
@model IEnumerable<SourceMvc.Quantity>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.AdditionalQty)
</th>
</tr>
@foreach ( var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.AdditionalQty)
</td>
</tr>
}
</table>