我目前正在创建一个简单的购物车,其中基于对表格的调用来显示订单项。首先,我在这里利用了基本的CRUD,因此我正在读取一个表,过滤掉用户ID并检查是否已分配了orderID(以避免在购物车中重新显示订购的商品)。
一切正常,一切正常,但出于审美原因,我想处理在一个位置(订单数量A +订单数量B)汇总相同产品(相同ProductID,相同ProductName,但数量不同)的情况,等等),而不是拥有数量不同的多个订单项。
侧面说明:我提供的是订阅以及单笔订单(由表中的布尔值区分),所以请不要在此烦恼。
LineItems的模型如下:
public class LineItems
{
public int ID { get; set; }
public string UserID { get; set; }
public int ProductID { get; set; }
public string ProductName { get; set; }
//[Range(1, int.MaxValue, ErrorMessage = "Naja... Menge 0 lohnt sich nicht zu liefern...")]
public int SubscriptionQuantity { get; set; }
public string SubscriptionCadenceCategory { get; set; }
public int SubscriptionCadenceValue { get; set; }
public decimal SubscriptionPrice { get; set; }
public bool IsSingleOrder { get; set; }
//[Range(1, int.MaxValue, ErrorMessage = "Naja... Menge 0 lohnt sich nicht zu liefern...")]
public int SingleOrderQuantity { get; set; }
public decimal SingleOrderPrice { get; set; }
public decimal TotalPrice { get; set; }
public int OrderNumber { get; set; }
public DateTime UpdatedTimeStampUTC { get; set; }
public string UpdatedLatitude { get; set; }
public string UpdatedLongitude { get; set; }
public string UpdatedLocation { get; set; }
}
和视图:
<div id="shoppingCart" class="productTableSection row">
@foreach (var item in Model)
{
if (item.IsSingleOrder == false)
{
<div id="shoppingCartSubscriptionLineItemArea" class=" tableArea col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-2 col-lg-8">
@Html.HiddenFor(modelItem => item.ID, new { @class = "tableField col-xs-12 col-sm-12 col-md-12 col-lg-12" })
<a id="shoppingCartSubscriptionRemoveLink" class="tableField col-xs-1 col-sm-1 col-md-1 col-lg-1" href="#">
<i id="shoppingCartSubscriptionRemove" class="fas fa-trash-alt"></i>
</a>
<a id="shoppingCartSubscriptionLineItemLink" class="tableField col-xs-10 col-sm-10 col-md-10 col-lg-10" href="@Url.Action("ProductSubscription", "freshNclean", new { id = item.ID })">
<div id="shoppingCartSubscriptionProductNameField" class="tableField col-xs-7 col-sm-8 col-md-9 col-lg-9">
@Html.DisplayFor(modelItem => item.ProductName)
</div>
<div id="shoppingCartSubscriptionProductPriceField" class="tableField col-xs-5 col-sm-4 col-md-3 col-lg-3">
CHF @Html.DisplayFor(modelItem => item.SubscriptionPrice)
</div>
<div id="shoppingCartSubscriptionProductQuantityField" class="tableField col-xs-4 col-sm-4 col-md-5 col-lg-5">
@Html.DisplayFor(modelItem => item.SubscriptionQuantity) x
</div>
<div id="shoppingCartSubscriptionCadenceValueField" class="tableField col-xs-3 col-sm-2 col-md-2 col-lg-1">
alle @Html.DisplayFor(modelItem => item.SubscriptionCadenceValue)
</div>
<div id="shoppingCartSubscriptionCadenceCategoryField" class="tableField col-xs-5 col-sm-6 col-md-5 col-lg-6">
@Html.DisplayFor(modelItem => item.SubscriptionCadenceCategory)
</div>
<div id="shoppingCartSubscriptionTotalPriceField" class="tableField col-xs-12 col-sm-12 col-md-12 col-lg-12">
CHF @Html.DisplayFor(modelItem => item.TotalPrice)
</div>
</a>
<a id="shoppingCartSubscriptionEditLink" class="tableField col-xs-1 col-sm-1 col-md-1 col-lg-1" href="#">
<i id="shoppingCartSubscriptionEdit" class="fas fa-edit"></i>
</a>
</div>
}
else
{
<div id="shoppingCartSingleOrderLineItemArea" class=" tableArea col-xs-offset-1 col-xs-10 col-sm-offset-1 col-sm-10 col-md-offset-1 col-md-10 col-lg-offset-2 col-lg-8">
@Html.HiddenFor(modelItem => item.ID, new { @class = "tableField col-xs-12 col-sm-12 col-md-12 col-lg-12" })
<a id="shoppingCartSingleOrderRemoveLink" class="tableField col-xs-1 col-sm-1 col-md-1 col-lg-1" href="#">
<i id="shoppingCartSingleOrderRemove" class="fas fa-trash-alt"></i>
</a>
<a id="shoppingCartSingleOrderLineItemLink" class="tableField col-xs-10 col-sm-10 col-md-10 col-lg-10" href="@Url.Action("ProductSingleOrder", "freshNclean", new { id = item.ID })">
<div id="shoppingCartSingleOrderProductNameField" class="tableField col-xs-7 col-sm-8 col-md-9 col-lg-9">
@Html.DisplayFor(modelItem => item.ProductName)
</div>
<div id="shoppingCartSingleOrderProductPriceField" class="tableField col-xs-5 col-sm-4 col-md-3 col-lg-3">
CHF @Html.DisplayFor(modelItem => item.SingleOrderPrice)
</div>
<div id="shoppingCartSingleOrderProductQuantityField" class="tableField col-xs-12 col-sm-12 col-md-12 col-lg-12">
@Html.DisplayFor(modelItem => item.SingleOrderQuantity) x
</div>
<div id="shoppingCartSingleOrderTotalPriceField" class="tableField col-xs-12 col-sm-12 col-md-12 col-lg-12">
CHF @Html.DisplayFor(modelItem => item.TotalPrice)
</div>
</a>
<a id="shoppingCartSingleOrderEditLink" class="tableField col-xs-1 col-sm-1 col-md-1 col-lg-1" href="#">
<i id="shoppingCartSingleOrderEdit" class="fas fa-edit"></i>
</a>
</div>
}
}
</div>
最后是控制器:
// GET: /freshNclean/ShoppingCart
[Authorize]
public ActionResult ShoppingCart(Orders model)
{
// define variables
var userID = User.Identity.GetUserId();
DateTime nowUTC = DateTime.Now.ToUniversalTime();
DateTime nowLocal = DateTime.Now.ToLocalTime();
// track user activity: get method is restricted to activity name and timestamp
var LOADED = new UserActivities
{
UserID = userID,
ActivityName = "ShoppingCart_Loaded",
ActivityTimeStampUTC = nowUTC,
ActivityLatitude = "n/a",
ActivityLongitude = "n/a",
ActivityLocation = "n/a"
};
DATADB.UserActivityList.Add(LOADED);
DATADB.SaveChanges();
return View(DATADB.LineItemList.Where(x => x.UserID == userID).Where(x => x.OrderNumber == 0).ToList());
}
答案 0 :(得分:0)
我终于自己弄清楚了-并非如此。我所做的是改变了写入购物车的方式。但是最终结果是有效的。