2011-07-22 40 views
2

我很难包装如何合并jQuery/clientside javascript和asp.net以及整个页面生命周期模型。我们举一个具体的例子。如何使用jquery制作高级交互式asp.net serverside控件?

我有以下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添加到客户端控件上的值,并且当页面再次呈现时,所有内容都会被遗忘。

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

一个可能的解决方案是将值存储在隐藏字段中并让回发利用该隐藏字段来恢复其具有的值,但我觉得这个解决方案臃肿,考虑到在“旧时代”使用正确的发布数据发布帖子到页面。

回答

0

的问题是,你必须用你的DOM,你的jQuery脚本维护,但是您在到服务器的往返中丢失了该状态。

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

+0

此外,您提到的3种列表类型在浏览器中不会保留任何状态以回传,因此您必须使用隐藏控件。在移动事物时使用ajax调用会更好。 –

+0

我已经或多或少地得出结论:必须处理视图状态和webforms是***中的一个痛苦,当你开始做更多“花哨”的事情时,我已经开始将我的应用程序移植到asp.net mvc 3 :) – thmsn