假设我正在使用添加到购物车链接/按钮来渲染产品列表。
我还有 CartController , AddToCart 操作,接受产品类型的参数。
将产品添加到购物车后,用户应保持在同一页面(产品列表) - 不要重定向到购物车或其他东西。
我正在渲染应该更新自己的购物车摘要部分视图。
所以我的问题是关于添加到购物车链接/按钮的实现。
我应该使用: Html.ActionLink(...)
或 Html.BeginForm()和提交按钮。
也许还有其他方法......
如何在每种情况下发送产品信息?
由于
答案 0 :(得分:2)
我建议您对CartController.AddToCart使用jQuery.post()请求。使AddToCart成为局部视图。然后显示一个模态弹出窗口(页面顶部的div),显示产品已添加到购物车中...然后淡出!
保持简单。
现在请记住,您的某些用户将无法支持jquery / javascript。因此,将初始添加到购物车按钮发布到添加到购物车页面(不是部分页面...完整页面)...这可以将它们返回到原始页面。然后在添加到购物车按钮的顶部点焊您的jquery功能。这样你可以很好地涵盖这两个世界。
看看不引人注目的javascript / jquery的概念。
答案 1 :(得分:1)
我这样做的方法是为每个添加按钮创建一个表单(也许还有数量),因为您希望AddToCart操作只接收POST操作,这样您就可以处理所有添加到购物车逻辑然后重定向到你的主目录视图(或类似的东西:)
答案 2 :(得分:1)
我再次考虑如果用户没有javascript会发生什么。这些日子不太可能,但你是否因为某人意外关闭了javascript 而想要失去销售?
所以我要做的是创建一些典型的AddToCart链接(< a class =“add”href =“/ Shop / AddToCart / 5”>)。然后,AddToCart控制器将执行此操作并重定向回产品列表页面(您可能必须传递参数以指定要返回的页面)。
这是第一步考虑 - 关闭javascript。现在你可以考虑如何使用javascript。
捕获点击事件( $('a.add')。点击(...))然后你可以做两件事。一种方法是调用URL(您可以从事件对象中获取它),然后单独更新购物车。您还可以向URL添加一个参数,以便显示购物车部分视图,执行类似操作(从内存中写入):
$('a.add').click(function(event) { $('#cart').load(event.target.attr('href') + '&showcart=1');
詹姆斯