C# 这是避免回发的好方法吗?

C# 这是避免回发的好方法吗?,c#,javascript,jquery,asp.net,postback,C#,Javascript,Jquery,Asp.net,Postback,我正在ASP.NET中创建一个电子商务网站 对于可购买的实际产品,我放置了一个带有两个箭头的框,允许用户修改特定项目的数量。此功能已在Javascript中实现,以避免通过ASP.NET/C#代码管理此功能而导致的回发 现在的问题是,我该如何存储订购的物品?由于用户可以动态修改所选数量和产品,因此我需要弄清楚如何将所选项目传递到另一个aspx页面(用于签出) 由于要求严格,我不能使用购物车。只需允许用户随意处理大量的项目,然后一旦按下“结帐”按钮,用户将被引导到显示其项目的付款页面 由于项目的选

我正在ASP.NET中创建一个电子商务网站

对于可购买的实际产品,我放置了一个带有两个箭头的框,允许用户修改特定项目的数量。此功能已在Javascript中实现,以避免通过ASP.NET/C#代码管理此功能而导致的回发

现在的问题是,我该如何存储订购的物品?由于用户可以动态修改所选数量和产品,因此我需要弄清楚如何将所选项目传递到另一个aspx页面(用于签出)

由于要求严格,我不能使用购物车。只需允许用户随意处理大量的项目,然后一旦按下“结帐”按钮,用户将被引导到显示其项目的付款页面

由于项目的选择是在javascript中进行的,因此我需要找到一种方法将所选项目传递给另一个.aspx页面

我考虑将项目存储在javascript数据结构中,有点像一个表。产品ID将存储在一个字段中,相应产品的数量将存储在另一个字段中。按下checkout按钮后,该数据结构将传递到.aspx页面,并从那里以C#代码进行处理

这似乎有点复杂,特别是因为如果用户在按下“checkout”之前更改所选产品和数量,javascript结构可能会被多次修改


有什么想法吗

听起来应该很简单。在带有数量框和复选框的页面上,您只需对它们运行迭代器,查找第一批要订购的产品(假设该页面尚未仅显示要订购的产品),然后在该集合中查找数量。然后,您可以序列化这些数据对象,或者创建一个数据对象,并使用GET或POST(您喜欢的任何方式)将它们传递到ASP页面

换句话说,有点像你已经有了的想法,但我不认为创建或管理它过于复杂。大多数函数都可以重用和重复

根据Jared Farresh的评论,Cookie也很有意义。

您可以在javascript代码中使用数据,然后使用GET或POST将其传递到ASP页面

在服务器端,您可以使用或将JSON解析为.net对象

更新:在JavaScript中,JSON数据应如下所示:

var orders = [
         {
           "ProductID"  : 123,
           "SomeData": "some additional data if needed",
           "OrderedCount": 3
         },
         {
           "ProductID"  : 321,
           "SomeData": "some new additional data if needed",
           "OrderedCount": 1
         }
     ];

这是一系列订单。

从您问题下的评论来看,您对“购物车”的担忧似乎与服务器端购物车可能带来的开销有关

但是,您是否考虑过使用客户端购物车?您仍然可以使用购物车隐喻来降低“javascript数据结构的复杂性,有点像一个表”,而无需持久的后端实现

是这个概念的开源、轻量级实现。它的工作原理是将数据存储在cookie中。您可以通过查询对象直接检索它,也可以在HTML元素上指定一个类,启动脚本将自动用请求的值替换该元素的内部HTML。例如,页面加载后,
将立即将购物车中的商品数量作为其内部HTML


您可能还想查看我在处理具有类似需求的项目时问过的这篇文章:

不要将选择存储在客户端。使用AJAX调用将其存储在服务器上。如果您将其存储在客户端,那么解决方案最多只能是脆弱的。对于意外刷新页面并丢失购物篮项目的用户,您怎么说?虽然我大体上(完全)同意driis的观点,但我的印象是,不可能有“购物车”,这正是服务器端存储所能达到的效果。如果有人说“我的网站不能是橙色的”,说“你应该让你的网站变成橙色”是没有帮助的。不使用购物车的全部原因是因为这应该是一个尽可能便宜/简单的解决方案。需求实际上没有空间容纳任何AJAX。我同意最终购物车是最好的,但不幸的是,这些要求超出了我的控制范围。你不能使用临时cookie(只存储在客户端,而不是服务器上)来存储你的信息
在submit
,并在页面视图上阅读和修剪吗?或者,我想,用相关的信息构造一个
GET
字符串(虽然不太理想),然后我不得不重复我之前的评论。拥有一个AJAX驱动的购物车实际上并不比在客户端管理它更费力,前提是您已经了解服务器端语言。如果没有,研究阶段的账单有点棘手。谢谢:)你建议我如何存储所选产品?以及您可以推荐的数据结构?我只需要两个字段-产品ID和quantity@GregPettit-您也可以将相同的数据存储在cookie中。如果我真的对严格而简单地保存客户端的所有内容感兴趣,我只会使用表单。输入的名称或ID是产品ID(假设产品ID是这些属性的有效字符串),数量只是输入的值。JS函数只是迭代并将数量与ID/name匹配,忽略任何数量值为0的。除非按照Jared的建议将其塞进cookie(一个好主意),否则没有真正的数据存储。这是值得研究的:)尽管我没有JSON的经验,也不确定它将如何使用。您能否简要介绍一下如何将其应用于存储用户选择的项目?谢谢您的帮助!我将研究这项技术:)