使用jQuery UI和.Net母版页

时间:2011-09-23 17:58:07

标签: asp.net jquery-ui

我想尝试在ASP.Net 4.0的主页旁边使用jQuery UI;我比.Net控件更喜欢小部件。但我对手风琴控制有疑问。

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

我在想我只想在母版页的初始加载时使用jQuery ready函数,但我似乎无法实现这一点。

我希望这是有道理的。

谢谢

5 个答案:

答案 0 :(得分:2)

显然你并不是唯一一个遇到这个问题的人,大多数人都是这样做的this post explains it.

答案 1 :(得分:1)

您可以使用asp:Hidden字段来保存“currentOpenAccordionPanel”。我确定只要打开不同的面板,就可以挂钩更新该字段的jQuery事件。然后你的page-init代码可以检查该字段并打开该面板(如果该字段为空或缺席,则打开默认面板)。

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

  2. 或制作内容区域div,然后在手风琴链接上点击,进行ajax调用并在其中加载新内容

答案 4 :(得分:0)

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