【问题标题】:Tradeoffs with client vs server side postback handling客户端与服务器端回发处理的权衡
【发布时间】:2010-08-26 17:49:23
【问题描述】:

我有一个 ListView,其中包含大量带有文本框的行集合,用户可以选择填写这些文本框。这些文本框不是数据绑定的。当用户单击“下一步”时,我需要遍历行并确定用户填写了哪些字段,然后用数据更新一种“购物车”并移至确认页面(“您已选择 a,g ,v,zz,这是正确的吗?”之类的东西)。

  1. 我可以想到两种方法来处理这个问题。首先是服务器端,遍历列表视图中的项目,获取控件 ID,将此数据保存到列表中,然后将其保存到数据库购物车表中以供下一个屏幕读取。

  2. 我可以使用 jquery 收集客户端的所有值,然后将其传递回隐藏字段中的表单,并使用 Newton.Json 之类的东西将数据放入类似的列表中。

这两种方法的优缺点是什么?你能想出更好的方法吗?

请记住,我的截止日期非常紧迫,因此需要执行我可以最快实施的选项。

【问题讨论】:

    标签: asp.net jquery postback


    【解决方案1】:

    我会说两者实施起来都同样快,至少对我来说是这样。

    做你觉得最舒服的事情,在我看来,选项 1 是你知道该怎么做的事情,所以如果时间紧迫,这可能是你的选择。

    与选项 1 中的视图状态相比,选项 2 中的 ajax 调用发送的数据更少。

    如果字段数量不太高,我认为这两种解决方案都不是折衷方案。更重要的是您将逻辑放在哪里,以及您是否愿意将其放在客户端上。

    【讨论】:

    • 好的,Javascript 的稳定性和跨浏览器的兼容性如何。显然,我不会在这里支持 Lynx 或任何东西,但是这个简单的 Javascript 是否应该在所有浏览器上都可以使用,至少可以追溯到 IE6 吗?甚至可能是 IE5?
    • jQuery 声明 IE6+,所以不确定它是否适用于 IE5。您总是可以自己编写 javascript。 IE4 支持 xml-http 请求,所以你应该能够让它工作.. 但是.. 然后是时间问题 ;)
    • 我这里不做异步回发,没必要。只需收集结果并将其填充到隐藏字段中以进行回发处理。
    • 在阅读了上面的 cmets 之后,我建议使用服务器端选项,因为它没有任何浏览器或客户端依赖项,其次,正如 Mikael 所说,选项 1 看起来很知名对你来说,这样会花费更少的时间。也许您可以稍后尝试客户端选项。 :)
    • 关于您的最新评论:那么客户端方法不会对请求大小产生太大影响,因此最好使用选项 1。