ASP.NET MVC购物车&jQuery
问题描述:
我有一个定价页面,其中显示产品列表及其价格。用户可以选择添加多个产品到购物车(活动购物车正在显示在页面的右侧)。目前,这是我如何使用Ajax/jQuery的实现了它......从我的观点(ASPX)ASP.NET MVC购物车&jQuery
代码片段:循环在视图模型提供的产品和救援人员到场细节显示:
<% foreach (var _product in _supplier.HotelProducts)
{ %>
<tr>
<td colspan="2" align="left" valign="top"><% = _product.Description %></td>
<td align="left">
<% using (Html.BeginForm("AddToCart", "ShoppingCart", FormMethod.Post, new { @class = "addProductToCartForm" }))
{ %>
<input type="hidden" name="hSupplierID" id="hSupplierID" value="<% = _supplier.ID %>" />
<input type="hidden" name="hProductCode" id="hProductCode" value="<% = _product.Code %>" />
<input type="hidden" name="hProductDescription" id="hProductDescription" value="<% = _product.Description %>" />
<input type="hidden" name="hProductPrice" id="hProductPrice" value="<% = _product.TotalPrice %>" />
<input type="submit" value="+ Add to cart" />
<% } %>
</td>
<td valign="top" align="center">
<span id="spanProductPrice" class="_price">$<% = _product.TotalPrice %></span>
</td>
</tr>
<% } %>
正如你可以看到从上面的代码段,我有“+加入购物车”按钮againts每个产品,我的要求是将我的控制器和购物车通过SupplierID和产品详细信息(代码,说明&价格)。请注意,我从外部网络服务获得产品的价格清单&,并且我无法通过产品代码并在服务器端检索相应的描述价格,这就是为什么我需要在用户添加时捕获所需产品详细信息的原因它来购物车。
$(function() {
$(".addProductToCartForm").submit(function (e) {
e.preventDefault();
var HiddenCartForm = {
SupplierID: $(this.hSupplierID).val(),
Code: $(this.hProductCode).val(),
Description: $(this.hProductDescription).val(),
TotalPrice: $(this.hProductPrice).val()
};
$.post($(this).attr("action"), HiddenCartForm, function (data) {
//alert("Success");
renderCart(data);
});
return false; // form already submitted using ajax, don't submit it again the regular way
});
});
function renderCart(data) {
$("#rightColumn").html(data);
}
这里是我用来从View传递信息通过JQuery
public class HiddenCartForm
{
public string SupplierID { get; set; }
public string Code { get; set; }
public string Description { get; set; }
public decimal? TotalPrice { get; set; }
//public ProductView Product { get; set; }
}
来控制我的自定义HiddenCartForm对象我有两个问题:
[1]有没有更好的办法处理这种情况?我有点不舒服,在视图上有很多隐藏字段(用于存放SupplierID &产品详细信息)。这些表格&隐藏的字段将在有人查看源代码时可见。
[2]当用户将特定产品添加到购物车时,我几乎需要“_product”中的所有信息。有没有更好的方式来通过JQuery传递这些信息,而不是使用隐藏字段,因为我在我看来循环了产品foreach (var _product in _supplier.HotelProducts)
?
我目前在MVC 2上。
答
为什么您需要在表单文章中传递产品的描述和价格?处理AJAX文章的控制器操作无法从数据库中查看这些值吗?根据模型的定义,供应商ID也可能因为类似的原因而被删除。
Kevin,我通过调用外部WebService获取产品及其定价列表,并且此信息不会保留在本地数据库中......因此,我无法通过产品代码并检索相应的说明和价格服务器端,这就是为什么当用户将其添加到购物车时,我需要捕获所需的产品详细信息。我需要为供应商显示更多信息,但由于我在本地数据库中有供应商数据,因此我仅传递供应商ID并在控制器中查找其他信息,但我无法对产品执行相同操作:( – Alex 2011-02-09 22:30:42