我来自程序PHP背景。我试图学习如何做我以前在PHP中做的相同的事情,并在asp.net中做。我需要根据客户名称对我的订单进行排序。 现在我的布局是:
我的布局更像是:
订单2
沃尔玛
我可以使用PHP轻松完成此操作,但我很难弄清楚如何在MVC类型的应用程序中执行此操作。 这就是我的cshtml页面的外观。
<table class="table table-condensed" style="border-collapse:collapse;">
<thead>
<tr>
<th><input type="checkbox" name="CheckOrders" />Select All </th>
<th>Bill to Name</th>
<th>Qty Ordered</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr data-toggle="collapse" data-target="#@Html.DisplayFor(model => item.customer_number)" class="accordion-toggle">
<td><input type="checkbox" name="checkAllCus" value="@Html.DisplayFor(model => item.customer_number)"/></td>
<td>
@Html.DisplayFor(model => item.Bill_to_Name)
</td>
<td>
@Html.DisplayFor(model => item.Quantity_Ordered)
</td>
</tr>
<tr>
<td colspan="12" class="hiddenRow">
<div class="accordian-body collapse" id="@Html.DisplayFor(model => item.customer_number)">
<table class="table table-striped">
<thead>
<tr>
<th></th>
<th>Order Number</th>
<th>Bill to Name</th>
<th>Qty Ordered</th>
<th>Ship Date</th>
<th>Item #</th>
<th>Description</th>
<th>State</th>
<th>Carrier</th>
<th>Details</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" name="orders[]" value="@Html.DisplayFor(model => item.order_no)" /></td>
<td>
@Html.DisplayFor(model => item.order_no)
</td>
<td>
@Html.DisplayFor(model => item.Bill_to_Name)
</td>
<td>
@Html.DisplayFor(model => item.Quantity_Ordered)
</td>
<td>
@Html.DisplayFor(model => item.Ship_Date)
</td>
<td>
@Html.DisplayFor(model => item.item_no)
</td>
<td>
@Html.DisplayFor(model => item.descr1)
</td>
<td>
@Html.DisplayFor(model => item.shipstate)
</td>
<td>
@Html.DisplayFor(model => item.shipper)
</td>
<td>
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ })
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
}
</tbody>
</table>
以下是我的模特
namespace OpenCustomerOrder3.Models
{
using System;
public partial class spOrderDetails_Result
{
public string cusNo;
public string customer_number { get; set; }
public string shipper { get; set; }
public string user_def_fld_5 { get; set; }
public string item_no { get; set; }
public string descr1 { get; set; }
public string location1 { get; set; }
public string Bill_to_Name { get; set; }
public Nullable<decimal> Quantity_Ordered { get; set; }
public string Requested_Date { get; set; }
public string Ship_Date { get; set; }
public string Status { get; set; }
public string order_no { get; set; }
public string shipstate { get; set; }
}
}
答案 0 :(得分:1)
这实际上归结为您的域模型的样子。
看起来目前传递给视图的模型类型只是IEnumerable<Order>
或类似的。如果您真的必须这样做,那么实现目标的一种方法是使用CustomerName
中的GroupBy
方法按System.Linq
分组您的订单。
但是,更好的模型是让客户模型有许多订单,即客户和订单之间存在1 .. *关系。例如,
public class Customer
{
public string Name { get; set; }
public IEnumerable<Order> Orders { get; set; }
}
然后你想要的是将IEnumerable<Customer>
传递给你的观点。