C# 我应该发布购物车项目的更改吗

C# 我应该发布购物车项目的更改吗,c#,asp.net-core,razor-pages,C#,Asp.net Core,Razor Pages,我有一个ASP.NET Core 2.1 Razor页面制作的网络商店。假设我有一个结账台,它列出了表中的所有购物车项目,并且每个项目都应该有: “删除项目”链接/按钮 a增加物品数量 a减少物品数量 带有关联“提交”按钮的数字文本字段 这里的最佳实践是什么? 对于商店中的小型购物车视图,我非常确定我将使用jQueryAjax/API来更改项目。但是在更大的结账台上,这是不可能的,因为周围的东西太多了(而且我不是FE dude,所以我不能使用react或任何其他花哨的东西)。 当我读到这篇文

我有一个ASP.NET Core 2.1 Razor页面制作的网络商店。假设我有一个结账台,它列出了表中的所有购物车项目,并且每个项目都应该有:

  • “删除项目”链接/按钮
  • a增加物品数量
  • a减少物品数量
  • 带有关联“提交”按钮的数字文本字段
这里的最佳实践是什么? 对于商店中的小型购物车视图,我非常确定我将使用jQueryAjax/API来更改项目。但是在更大的结账台上,这是不可能的,因为周围的东西太多了(而且我不是FE dude,所以我不能使用react或任何其他花哨的东西)。 当我读到这篇文章的时候,我觉得我必须把每一个链接都放在自己的html表单中。但这不可能是对的,每行4张表格。
有什么想法吗???

这要看情况而定。有像一个由单个按钮组成的表单这样的东西并不少见。这通常用于注销用户,例如,因为这种类型的请求应该通过POST发出(GET不应该修改状态),而HTML表单是在没有AJAX的浏览器中实现这一点的唯一方法

您可以选择使用AJAX发出这些请求,然后清理视图。显然,它需要更多地使用JavaScript,但对于这样的事情,它非常简单。例如,如果数量增加,您只需要在成功的AJAX请求之后更新显示数量的文本。这不是疯狂的DOM工作量

最简单的方法是使用某种JS库。你不必全力以赴。您可以使用Vue.js或Alpine.js之类的东西,它们在代码和脑力方面都要轻得多。这些仍然需要一个学习曲线,但老实说,在今天这个时代,你将无法严格遵守静态HTML。每天都需要越来越多的动态交互,这就像对抗潮流一样


现在另一个潜在的选择是Blazor,特别是Razor组件。实际上,您可以在Razor页面或MVC应用程序中使用Razor组件,而不必完全使用Blazor,这可以实现一些戏剧性的交互级别。本质上,您只需创建一个Cart组件,并通过C#代码定义所需的所有交互性(除非您尝试合并第三方JS库,否则无需学习JS)。然后,您只需将该组件放入购物车页面。有关更多信息,请参阅和上的文档。

这取决于具体情况。有像一个由单个按钮组成的表单这样的东西并不少见。这通常用于注销用户,例如,因为这种类型的请求应该通过POST发出(GET不应该修改状态),而HTML表单是在没有AJAX的浏览器中实现这一点的唯一方法

您可以选择使用AJAX发出这些请求,然后清理视图。显然,它需要更多地使用JavaScript,但对于这样的事情,它非常简单。例如,如果数量增加,您只需要在成功的AJAX请求之后更新显示数量的文本。这不是疯狂的DOM工作量

最简单的方法是使用某种JS库。你不必全力以赴。您可以使用Vue.js或Alpine.js之类的东西,它们在代码和脑力方面都要轻得多。这些仍然需要一个学习曲线,但老实说,在今天这个时代,你将无法严格遵守静态HTML。每天都需要越来越多的动态交互,这就像对抗潮流一样


现在另一个潜在的选择是Blazor,特别是Razor组件。实际上,您可以在Razor页面或MVC应用程序中使用Razor组件,而不必完全使用Blazor,这可以实现一些戏剧性的交互级别。本质上,您只需创建一个Cart组件,并通过C#代码定义所需的所有交互性(除非您尝试合并第三方JS库,否则无需学习JS)。然后,您只需将该组件放入购物车页面。有关更多信息,请参阅和上的文档。

非常感谢您的回答,因此我想如果不在列表中的每个链接/按钮周围使用表单,razor页面就无法实现这一点。如果没有JavaScript或razor组件,不可以。非常感谢您的回答,所以我想,如果不在列表中的每个链接/按钮周围使用表单,就无法在razor页面上实现这一点。