【发布时间】:2017-10-18 14:55:09
【问题描述】:
这个我的代码和这个动作中的每一行都会做一些事情并从数据库中检索一些记录,让我举一个关于这个动作的例子,这个动作将显示 Ordre 和该 ordre 下的产品,这意味着 Ordre (1212 ) 可能有 1 个产品或多个产品,但我的代码只显示该订单的一个记录,而不是所有记录,所以我的问题是如何将此操作的返回记录列出?还是我应该做点别的!谁能指引我正确的方向?谢谢
控制器中的代码:
public ActionResult OrdreOpenDetails(string id)
{
DataContext data_2 = new DataContext();
Ordre_Open_Details_VM oodvm = new Ordre_Open_Details_VM();
oodvm.SalesLine = data_2.Sales_Line.FirstOrDefault(n => n.Document_No_ == id);
oodvm.SalesHeader = data_2.Sales_Header.FirstOrDefault(m => m.No_ == oodvm.SalesLine.Document_No_);
oodvm.SalesPersonPurchasers = data_2.Salesperson_Purchasers.FirstOrDefault(h=>h.Code == oodvm.SalesHeader.Salesperson_Code);
oodvm.SalesCommentLine = data_2.Sales_Comment_Line.FirstOrDefault(z => z.No_ == oodvm.SalesLine.Document_No_);
oodvm.PurchaseLine = data_2.Purchase_Line.FirstOrDefault(t=>t.Document_No_ == oodvm.SalesLine.Købsordrenr_);
return View(oodvm);
}
我的 ViewModel 类:
public class Ordre_Open_Details_VM
{
public Sales_Header SalesHeader { get; set; }
public Sales_Line SalesLine { get; set; }
public Purchase_Line PurchaseLine { get; set; }
public Salesperson_Purchasers SalesPersonPurchasers { get; set; }
public Sales_Comment_Line SalesCommentLine { get; set; }
}
视图中的代码:
@model DBhandling.Ordre_Open_Details_VM
<h2>OrdreOpenDetails</h2>
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-4 col-md-5">
<div class="card">
<div class="card-header" data-background-color="purple">
<h4 class="title">Detaljer</h4>
@*<p class="category">Detaljer <span>»</span> Order nr <span>»</span> @Model.SalesInvoiceHeader.Order_No_</p>*@
</div>
<div class="card-content">
<form>
<div class="row">
<div class="col-md-6">
<div class="form-group label-floating">
<label>Order nr.</label>
<input type="text" class="form-control border-input" disabled value="@Model.SalesHeader.No_">
</div>
</div>
<div class="col-md-6">
<div class="form-group label-floating">
<label>vare nummer</label>
<input type="text" class="form-control border-input" disabled value="@Model.SalesLine.No_">
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group label-floating">
<label>Forventet levering</label>
<input type="datetime" class="form-control border-input" disabled value="@Model.SalesLine.Planned_Delivery_Date">
</div>
</div>
<div class="col-md-6">
<div class="form-group label-floating">
<label>Forventet levering Direkte</label>
<input type="datetime" class="form-control border-input" disabled value="@(Model.PurchaseLine != null ? Model.PurchaseLine.Planned_Receipt_Date :(DateTime?)null )">
</div>
</div>
<div class="col-md-6">
<div class="form-group label-floating">
<label>Sales Person</label>
<input type="text" class="form-control border-input" disabled value="@Model.SalesPersonPurchasers.Name">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group label-floating">
<label>Comment</label>
<input type="text" class="form-control border-input" disabled value="@(Model.SalesCommentLine != null ? Model.SalesCommentLine.Comment : "No Comment")">
</div>
</div>
</div>
<div class="clearfix"></div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
【问题讨论】:
-
您是否尝试过使用
SelectMany? -
@code4life 请你举一个我的代码的例子! :)
-
我认为最好让您的 Ordre_Open_Details_VM 类属性成为每个对应对象的列表。这样,您的 oodvm 实例可以使用 SelectMany Linq 方法填充。在这种情况下,oodvm 将代表多个订单,每个属性的索引代表一个唯一的订单条目。然后你可以随心所欲地遍历这些
-
代码中的哪一行是实际的命令?您的视图模型只有单个项目,并且需要一个订单列表,然后您的代码需要使用 Where 和 ToList 调用订单。然后你会在你的视图中迭代它......
-
@klabranche this to lines 是关于 ordres 的,先生,如果可能的话,最好用我的代码举个例子,而不是我可以了解更多信息:) - oodvm.SalesLine = data_2。 Sales_Line.FirstOrDefault(n => n.Document_No_ == id); oodvm.SalesHeader = data_2.Sales_Header.FirstOrDefault(m => m.No_ == oodvm.SalesLine.Document_No_);