Asp.net 使用jQuery UI和.Net母版页

Asp.net 使用jQuery UI和.Net母版页,asp.net,jquery-ui,Asp.net,Jquery Ui,我想尝试在ASP.NET4.0中沿着母版页使用jQueryUI;与.Net控件相比,我更喜欢小部件。但我有一个关于手风琴控制的问题 是否可以在母版页中放置一个手风琴控件,并像菜单一样使用它,同时仍然允许它保留所选的面板?换句话说,每次加载页面时,母版页中会触发ready()事件并重置手风琴。如果我打开了面板3,并在面板中选择了一个项目,我希望在加载新内容时面板3保持打开状态 我在想,我只想在母版页的初始加载时使用jqueryready函数,但我似乎无法做到这一点 我希望这是有道理的 谢谢我不确定

我想尝试在ASP.NET4.0中沿着母版页使用jQueryUI;与.Net控件相比,我更喜欢小部件。但我有一个关于手风琴控制的问题

是否可以在母版页中放置一个手风琴控件,并像菜单一样使用它,同时仍然允许它保留所选的面板?换句话说,每次加载页面时,母版页中会触发ready()事件并重置手风琴。如果我打开了面板3,并在面板中选择了一个项目,我希望在加载新内容时面板3保持打开状态

我在想,我只想在母版页的初始加载时使用jqueryready函数,但我似乎无法做到这一点

我希望这是有道理的


谢谢

我不确定这是否是一个好答案,但您可能可以在视图中使用会话变量和逻辑,仅在第一次加载时渲染手风琴脚本。将会话变量设置为某个值,并在后续加载时检查该值。如果设置了,请不要渲染javascript代码(?)可能有更好的方法。

显然,出现此问题的并非只有您一人,大多数人都是这样做的

  • 制作一个“内容区域”iframe。单击手风琴上的链接时,在iframe中加载不同的页面

  • 或者创建一个contentareadiv,在accordian链接上单击,对其进行ajax调用并加载新内容


  • 您可以使用asp:Hidden字段来保存“currentOpenAccordionPanel”。我确信只要打开不同的面板,就可以钩住jQuery事件来更新该字段。然后,您的页面初始化代码可以检查该字段并打开该面板(如果该字段为空或不存在,则打开默认面板)

    因为它是一个asp:Hidden字段,所以通过回发操作,该值将保持稳定(它将位于viewstate中),这听起来像是您想要的


    与基于会话的方法或基于cookie的方法相比,我更喜欢这种方法:如果用户在您的站点上打开了多个浏览器/选项卡,那么如果您将这些值存储在一个公共位置(如会话或cookie),它们会相互踩踏对方的值。如果用户打开了多个选项卡,则Viewstate存储的数据仍将正常运行。

    是否必须进行整页回发?如果没有,那么您可以使用客户端的ajax与服务器交互,从而避免保持手风琴的状态。对此,使用UpdatePanel是一个选项。此外,您还可以在表单中添加隐藏的输入字段,并在回传之前设置其值。然后在服务器上,您可以使用ClientScriptManager发出必要的jQuery调用,将accordian的状态设置回回发回之前的状态。

    Hi Mike。谢谢你的帮助。我得到了你的建议,但我不能让隐藏字段按照你的建议工作。一旦我导航到另一个页面,隐藏字段就会重置。也就是说,母版页中对它的引用将其重置回默认值。同意-与所有viewstate存储的数据一样,它通过回发而不是通过新页面请求保持。我误解了你的问题-我不知道你想让同一个手风琴面板的打开项在用户在网站上的整个会话中保持不变(或者在基于cookie的数据存储的情况下,多个会话)。我讨厌使用@Mikemane提到的cookie,但这个解决方案确实有效。