У меня есть это:Почему мой пост ajax не заменяет содержимое?
<div id="miniShoppingCartContainer">
@Html.Action("MiniShoppingCart", "ShoppingCart")
</div>
, где действие MiniShoppingCart возвращает MiniShoppingCart.cshtml частичный вид со всем содержимым.
В этом частичном виде я добавил АЯКС призыва к увеличению количества корзины товаров:
@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 (как вы видите в начале сообщения).
Ну, обновление продукта происходит хорошо, но содержание не обновляется (или заменен) ...
Можете ли вы указать, где я не прав?
UPDATE:
Ведение проверки с 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()
метода ...
У вас есть ненавязчивый Аякс файл расслоения плотной ' 'в вашем представлении/макете? – nemesv
Да, у меня есть это: '' –
Вы должны проверить в консоли разработчика браузера (IE/Chrome F12) или в FireBug, что возвращает 'IncreaseProductQuantity'. Может быть, вы увидите намек на то, что не работает. – nemesv