【问题标题】:Asp.net MVC eCommerce app - Add To Cart implementationAsp.net MVC 电子商务应用程序 - 添加到购物车实施
【发布时间】:2009-07-28 20:36:26
【问题描述】:

假设我正在渲染带有添加到购物车链接/按钮的产品列表。

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

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

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

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

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

Html.BeginForm()和提交按钮。

也许还有其他方法……

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

谢谢

【问题讨论】:

    标签: asp.net-mvc e-commerce


    【解决方案1】:

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

    保持简单。

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

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

    【讨论】:

    • 能被谷歌等缓存吗?我记得读过一些关于此的内容以及 Google 如何缓存使用 get 而不是 post 的删除命令。但不确定它是否适用于这种情况。
    • 如果您愿意,可以在其上发布帖子。链接确实可以被缓存,但您可以将其添加到您的无机器人列表中,这样他们就不会查看它。您可以检查该页面上的引荐来源网址,以确保它来自您的网站。有很多方法可以解决这个问题。但这并不重要,因为谷歌只会代表它自己行事。
    • 实际上,如果您使用 get 动词执行“代理”操作(即 addToCart、RemoveFromCart 等),这可能会出现问题,因为搜索机器人可能会生成购物车并在您的网站上弄得一团糟不知道(robots.txt 不是防止这种情况的方法)... get 永远不应该改变你的数据状态(即多个 get 命令应该返回相同的结果)
    【解决方案2】:

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

    【讨论】:

    • 我现在打算实现这个方法,可能会在后期添加 js/jQuery。谢谢大家的意见
    【解决方案3】:

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

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

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

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

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

    詹姆斯

    【讨论】:

    • 对 get 请求执行操作(添加、更新、删除)不是一个好主意。谷歌可能会填满一个非常大的购物车。但我猜你的帖子更多的是关于不显眼的 javascript。
    • 好点。不过,除非另有证明,否则我个人不会为购物车担心太多,希望它背后有某种清理程序。完全同意其他类型的添加和删除。而且,对不显眼的 js 来说是的。
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多