1

假设我正在渲染产品列表,每个产品旁边都有“添加到购物车”链接/按钮。

我还有一个带有AddToCart Action 的CartController ,它接受Product类型的参数。

将产品添加到购物车后,用户应该留在同一页面(产品列表) - 不会被重定向到购物车或其他东西。

我正在渲染应该更新自身的购物车摘要部分视图。

所以我的问题是关于添加到购物车链接/按钮的实现。

我应该使用:Html.ActionLink(...)

Html.BeginForm()和提交按钮。

也许还有其他方法...

在每种情况下如何发送产品信息?

谢谢

4

3 回答 3

2

我建议对您的 CartController.AddToCart 使用jQuery.post()请求。使 AddToCart 成为局部视图。然后显示一个模态弹出窗口(页面顶部的 div),显示产品已添加到购物车......然后淡出!

把事情简单化。

现在请记住,您的一些用户将无法支持 jquery/javascript。因此,将初始添加到购物车按钮发布到添加到购物车页面(不是部分页面..整页)......这可以将它们返回到原始页面。然后将您的 jquery 函数点焊在添加到购物车按钮的顶部。这样你就可以很好地覆盖这两个世界。

看看不显眼的 javascript/jquery 的概念。

于 2009-07-28T20:41:57.563 回答
1

我再次考虑如果用户没有 javascript 会发生什么。这几天不太可能,但是你想因为有人不小心关闭了 javascript 而失去了一笔销售吗?

所以我要做的是创建有点典型的 AddToCart 链接(<a class="add" href="/Shop/AddToCart/5">)。然后 AddToCart 控制器将执行它的工作并重定向回产品列表页面(您可能必须传递一个参数来指定要返回的页面)。

所以这是要考虑的第一步——关闭javascript。现在您可以考虑如何使用 javascript 来实现它。

捕获点击事件($('a.add').click(...))然后你可以做两件事。一种是调用 URL(您可以从事件对象中获取它),然后单独更新购物车。您还可以向 URL 添加一个参数,以便它显示购物车部分视图,执行类似(从内存中写入)的操作:

$('a.add').click(function(event) { $('#cart').load(event.target.attr('href') + '&showcart=1');

詹姆士

于 2009-07-28T21:08:15.950 回答
1

我这样做的方式是为每个添加按钮(可能还有数量)设置一个表单,因为您希望 AddToCart 操作无论如何只接收 POST 操作,这样您就可以处理所有添加到购物车的逻辑,然后重定向到您的主目录视图(或类似的东西:)

于 2009-07-28T20:59:49.963 回答