我应该 post 更改购物车商品吗
Should I post changes for cart items
我有一个使用 ASP.NET Core 2.1 Razor-pages 制作的网上商店。假设我有一个结帐,在 table 中列出了所有购物车商品 - 对于每个商品,应该有:
- 一个删除项link/button
- a 增加物品数量
- a 减少项目数量
- 带有关联 "submit" 按钮的数字文本字段
此处的最佳做法是什么?
对于商店中的小购物车视图,我很确定我会使用 jquery-ajax/API 来更改项目。但是在更大的结帐中,由于周围的所有东西,这是不可能的(而且我不是 FE-dude,所以我不能使用反应或任何其他花哨的东西)。
当读到这篇文章时,感觉我必须将每个 link 放在它们自己的 html 形式中,并带有 post。但那是不对的,每行 4 个表格。
有什么想法吗??
这取决于。拥有一个由单个按钮组成的表单之类的东西并不少见。这通常用于注销用户,例如,因为这种类型的请求应该通过 POST 发出(GET 永远不应该修改状态),而 HTML 表单是唯一的方法在没有 AJAX.
的浏览器中
您可以选择使用 AJAX 来发出这些请求并在之后清理视图。显然,它需要对 JavaScript 做更多的工作,但是对于像这样的事情,它非常简单。例如,增加数量,您只需要在 AJAX 请求成功后更新显示数量的文本。 DOM 工作量并不大。
最简单的方法是使用某种 JS 库。您不必全力以赴 Angular。您可以使用 Vue.js 或 Alpine.js 之类的东西,它们在代码和脑力劳动方面要轻得多。这些确实仍然需要学习曲线,但老实说,在当今时代,您将无法严格遵守静态 HTML。每天都需要越来越多的动态互动,就像逆水行舟一样。
现在另一个可能的选择是 Blazor,特别是 Razor Components。实际上,您可以在 Razor Pages 或 MVC 应用程序中使用 Razor 组件,而不必完全使用 Blazor,这可以实现一些显着的交互级别。本质上,您只需创建一个 Cart 组件,并通过 C# 代码定义您需要的所有交互性(无需学习 JS,除非您尝试合并第三方 JS 库)。然后,您只需将该组件放入您的购物车页面。有关详细信息,请参阅 Creating Razor Components and Using Razor Components in Razor Pages 上的文档。
我有一个使用 ASP.NET Core 2.1 Razor-pages 制作的网上商店。假设我有一个结帐,在 table 中列出了所有购物车商品 - 对于每个商品,应该有:
- 一个删除项link/button
- a 增加物品数量
- a 减少项目数量
- 带有关联 "submit" 按钮的数字文本字段
此处的最佳做法是什么? 对于商店中的小购物车视图,我很确定我会使用 jquery-ajax/API 来更改项目。但是在更大的结帐中,由于周围的所有东西,这是不可能的(而且我不是 FE-dude,所以我不能使用反应或任何其他花哨的东西)。 当读到这篇文章时,感觉我必须将每个 link 放在它们自己的 html 形式中,并带有 post。但那是不对的,每行 4 个表格。 有什么想法吗??
这取决于。拥有一个由单个按钮组成的表单之类的东西并不少见。这通常用于注销用户,例如,因为这种类型的请求应该通过 POST 发出(GET 永远不应该修改状态),而 HTML 表单是唯一的方法在没有 AJAX.
的浏览器中您可以选择使用 AJAX 来发出这些请求并在之后清理视图。显然,它需要对 JavaScript 做更多的工作,但是对于像这样的事情,它非常简单。例如,增加数量,您只需要在 AJAX 请求成功后更新显示数量的文本。 DOM 工作量并不大。
最简单的方法是使用某种 JS 库。您不必全力以赴 Angular。您可以使用 Vue.js 或 Alpine.js 之类的东西,它们在代码和脑力劳动方面要轻得多。这些确实仍然需要学习曲线,但老实说,在当今时代,您将无法严格遵守静态 HTML。每天都需要越来越多的动态互动,就像逆水行舟一样。
现在另一个可能的选择是 Blazor,特别是 Razor Components。实际上,您可以在 Razor Pages 或 MVC 应用程序中使用 Razor 组件,而不必完全使用 Blazor,这可以实现一些显着的交互级别。本质上,您只需创建一个 Cart 组件,并通过 C# 代码定义您需要的所有交互性(无需学习 JS,除非您尝试合并第三方 JS 库)。然后,您只需将该组件放入您的购物车页面。有关详细信息,请参阅 Creating Razor Components and Using Razor Components in Razor Pages 上的文档。