До сих пор я сделал свой сайт отзывчивым без обратной передачи при добавлении продуктов в корзину (добавляет Product.Id
в файл cookie с JQuery).Как сделать сайт отзывчивым без обратной передачи?
Когда пользователь заходит на страницу «Корзина/Оформить покупку», я прочитал все файлы Id
из файла cookie в контроллерах и поместил все записи в cartList
и передал их в Вид.
Теперь я застрял, поскольку не знаю, как его решить без обратной передачи, когда я хочу удалить продукт из корзины.
Можно ли сделать что-то подобное /, соответствующие как:
cartList.Remove(db.Products.SingleOrDefault(x=> x.Id == /*Id to remove from cart*/));
в View?
Мой код:
Я добавил Product.Id
в печенье с JQuery (получает идентификаторdata-id="@item.ID"
из Еогеасп цикла):
$('.add-to-cart').click(function() {
if ($.cookie("AddedProductId") != null) {
var previousValues = $.cookie("AddedProductId");
$.cookie("AddedProductId", previousValues + '_' + $(this).data('id'));
}else{
$.cookie("AddedProductId", $(this).data('id'));
}
});
Это, как я поддерживать cartList
с добавлением продуктов, внутри Контроллер, когда вы посещаете страницу с доставкой/оплатой:
public ActionResult Cart(){
var cart = Request.Cookies["AddedProductId"].Value;
String[] elements = Regex.Split(cart, "_");
List<Product> cartList = new List<Product>();
foreach (var item in elements){
cartList.Add(db.Products.SingleOrDefault(x => x.ID == new Guid(item)));
}
return View(cartList);
}
Затем я показываю все с петлей foreach
внутри /Cart/View
.
Что является лучшим вариантом для решения этой проблемы для Asp.Net MVC?
Я не могу заставить его работать, я даже установить точку останова мой контроллер, и он не будет использовать метод «Удалить». Также это правильно сделано: 'data: $ (this) .data ('id')'? Что, я полагаю, вставить часть '' ваш код ... '? – fagol
Используйте метод '@ Url.Action (« Удалить »,« Корзина »), это вернет вам правильный путь, который вы должны использовать. Возможно, ваше приложение настроено на [путь к программе] (https://msdn.microsoft.com/en-us/library/system.web.httprequest.applicationpath (v = vs.110) .aspx). В '// ваш код', это действия, которые будут выполняться, если он будет устранен правильным способом. – karritos
Спасибо, что он работает сейчас! – fagol