如何使用jquery创建高级交互式asp.net服务器端控件?

时间:2011-07-22 23:13:29

标签: jquery asp.net postback viewstate page-lifecycle

我很难解决如何合并jQuery / clientside javascript和asp.net以及整个页面生命周期模型的问题。让我们举一个具体的例子。

我有以下3个列表,它们可以是gridview,列表框或自定义控件。

List 1 - a list of search results
List 2 - an empty list
List 3 - an empty list

现在我希望能够将列表1中的搜索结果拖动到列表2或3中,此外我希望能够将搜索结果从列表2拖动到3,或将列表3拖动到2。

问题实际上并没有使用jQuery来实现这个功能,问题来自于提交时间,提交可以在实际删除项目时完成,或者可能有专用按钮来执行提交。

如果你只是做回发,那么服务器端控件的视图状态将覆盖jQuery添加到客户端控件上的值,当页面再次呈现时,一切都被遗忘了。

如何将整个客户端与服务器端绑在一起?

一个可能的解决方案是将值存储在隐藏字段中并使回发利用此隐藏字段来恢复它具有的值,但我发现这个解决方案臃肿,考虑到在旧时代你只会做发布到具有正确发布数据的页面。

2 个答案:

答案 0 :(得分:0)

您可以从控件

注册客户端脚本

这可能会让你开始:

http://weblogs.asp.net/asmith/pages/25465.aspx

答案 1 :(得分:0)

问题在于你的DOM中有状态,由你的jQuery脚本维护,但你在往返服务器的那条路上失去了这个状态。

要保留状态信息,您必须将其放在隐藏字段(或cookie,甚至HTML5离线存储)中,但更好的解决方案是完全避免回发并允许控件通过AJAX调用与服务器交互。然后,即使您与服务器进行交互,也会保留客户端状态。