У меня есть это:
<div id="miniShoppingCartContainer">
@Html.Action("MiniShoppingCart", "ShoppingCart")
</div>
, где действие MiniShoppingCart возвращает частичное представление MiniShoppingCart.cshtml со всем содержимым.
В этом частичном представлении я добавил вызов ajax для увеличения количествакорзина продукта:
@using (Ajax.BeginForm("IncreaseProductQuantity", "ShoppingCart", new { shoppingCartItemId = item.Id }, new AjaxOptions { UpdateTargetId = "miniShoppingCartContainer", InsertionMode = InsertionMode.Replace }))
{
<li>
<input type="submit" class="btn-up" />
</li>
}
, которая вызывает метод:
public ActionResult IncreaseProductQuantity(int shoppingCartItemId)
{
//get shopping cart item
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart).ToList();
var sci = cart.Where(x => x.Id == shoppingCartItemId).FirstOrDefault();
if (sci == null)
{
return RedirectToRoute("ShoppingCart");
}
//update the cart item
_shoppingCartService.UpdateShoppingCartItem(_workContext.CurrentCustomer,
sci.Id, sci.Quantity + 1, true);
return MiniShoppingCart();
}
Обратите внимание, что в конце метода я вызывает MiniShoppingCart ActionResult, который подготавливает корзинуи верните PartialView (как вы видите в начале сообщения).
Что ж, обновление продукта происходит нормально, но содержимое не обновляется (или не заменяется) ...
Можете ли вы указать, где я не прав?
ОБНОВЛЕНИЕ :
Проверка Chrome Dev.Инструменты Я вижу ошибку при выполнении поста:
POST http://localhost/ShoppingCart/IncreaseProductQuantity?shoppingCartItemId=11 500 (Internal Server Error)
f.support.ajax.f.ajaxTransport.sendjquery-1.7.1.min.js:4
f.extend.ajaxjquery-1.7.1.min.js:4
ejquery.unobtrusive-ajax.min.js:5
(anonymous function)jquery.unobtrusive-ajax.min.js:5
f.event.dispatchjquery-1.7.1.min.js:3
f.event.add.h.handle.ijquery-1.7.1.min.js:3
2
Странно догадываться, в чем проблема из этого журнала ... В основном, если я делаю отладку, я вижу, что он выполняет все операции до return PartialView(model);
из MiniShoppingCart()
метод ...