我希望调用ajax函数以将其添加到我制作的购物车中,但是它似乎无法正常工作。我认为产品ID由于某种原因未与其链接。这是代码:
<div class="addtocart">
<a href="#" class="addtocart">Add to cart</a>
<span class="ajaxmsg">The product has been added to your cart. </span>
</div>
<script>
$(function () {
/*
* Add to cart
*/
$("a.addtocart").click(function (e) {
e.preventDefault();
$("span.loader").addClass("ib");
var url = "/cart/AddToCartPartial";
$.get(url, { id: @Model.Id }, function (data) {
$(".ajaxcart").html(data);
}).done(function () {
$("span.loader").removeClass("ib");
$("span.ajaxmsg").addClass("ib");
setTimeout(function () {
$("span.ajaxmsg").fadeOut("fast");
$("span.ajaxmsg").removeClass("ib");
}, 1000);
});
});
</script>
我找到了一个解决方案,但是当我使用此链接时,它可以工作,但是需要我不想使用的addtocartpartial。
@Html.ActionLink("Test", "AddtoCartPartial", "Cart", new { id = Model.Id }, new { @class = "addtocart" })
是否还有另一种方法来调用ajax脚本或避免链接到select的addtocartpartial页面上?
我的addtocartpartial控制器是:
public ActionResult AddToCartPartial(int id)
{
// Init CartVM list
List<CartVM> cart = Session["cart"] as List<CartVM> ?? new List<CartVM>();
// Init CartVM
CartVM model = new CartVM();
using (Db db = new Db())
{
// Get the product
ProductDTO product = db.Products.Find(id);
// Check if the product is already in cart
var productInCart = cart.FirstOrDefault(x => x.ProductId == id);
// If not, add new
if (productInCart == null)
{
cart.Add(new CartVM()
{
ProductId = product.Id,
ProductName = product.Name,
Quantity = 1,
Price = product.Price,
Image = product.ImageName
});
}
else
{
// If it is, increment
productInCart.Quantity++;
}
}
// Get total qty and price and add to model
int qty = 0;
decimal price = 0m;
foreach (var item in cart)
{
qty += item.Quantity;
price += item.Quantity * item.Price;
}
model.Quantity = qty;
model.Price = price;
// Save cart back to session
Session["cart"] = cart;
// Return partial view with model
return PartialView(model);
}
答案 0 :(得分:1)
您可能为id
参数设置了默认路由。在这种情况下,您可以将值以controller/action/{id}
格式附加到url,然后从$.get
中删除参数。以下代码可能适合您:
var url = "/cart/AddToCartPartial/" + "@Model.Id";
$.get(url, function (data) {
$(".ajaxcart").html(data);
}).done(function () {
// ... other code
});
或者您可以尝试使用查询参数样式附加id
:
var url = "/cart/AddToCartPartial?id=" + "@Model.Id";