当前位置:  开发笔记 > 后端 > 正文

asp.net webforms和jquery:如何在回发之间保存/恢复jquery状态?

如何解决《asp.netwebforms和jquery:如何在回发之间保存/恢复jquery状态?》经验,为你挑选了2个好方法。

我正在使用jquery构建一个asp.net webforms(3.5 sp1)应用程序,我可以在其中为UI设置动画,更改其状态.它一直运行良好,直到我开始做回发,其中UI显然将自身重置为其初始状态.

所以我的问题是,在回发之间保存和恢复jquery/UI状态的最佳实践是什么?

谢谢,埃吉尔.

更新:非常感谢大家,很好的投入,糟糕的我不能将多个答案标记为"答案".



1> tvanfosson..:

我通常通过AJAX在会话中存储菜单状态或过滤器(div中的输入集)可见性等服务器端.当菜单展开或显示过滤器时,单击处理程序将向Web服务发出AJAX事件,该服务将记录菜单的状态或过滤用户会话中的可见性.在回发中,我使用与每个菜单/过滤器对应的会话变量,通过CSS设置它的初始状态.我发现这是更好的用户体验,因为如果您在客户端进行更改,则在加载后通过javascript更新页面时不会闪烁.

示例 - 因为我在路上这不是项目中的实际代码,可能不完整.使用jQuery.Web服务的URL将取决于您实现Web服务的方式.我正在使用ASP.NET MVC(主要是)因此我的控制器操作.




> ...

服务器端代码

[AcceptVerbs( HttpVerbs.POST )]
[Authorization]
public ActionResult SetFilterVisibility( string name, bool visible )
{
    Session[name] = visible;
    return Content( string.Empty );  // not used... 
}

[AcceptVerbs( HttpVerbs.GET )]
[Authorization]
public ActionResult SomeAction( int id )
{
    ...
    ViewData["searchFilterVisibility"] = Session["searchFilter"];
    ...
    return View();
}



2> Crescent Fre..:

我认为你指的是在回发之间保存ui小部件的状态(而不是保存用户首选项).

在特定的一系列交互之后,很多状态仅适用于特定小部件,特定用户(例如,展开此树节点,单击该网格行等).除非在页面加载中恢复状态对您很重要,否则这些内容不必进入数据库,甚至不需要进入会话.

所有那些我倾向于放入一两个对象的东西,例如:

treeState.expandedNodeId = 'foo';
gridState.selectedRowIndex = 3;

然后我定期将它保存在隐藏的字段中:

$('.treeState').val(Sys.Serialization.JavaScriptSerializer.serialize(treeState));

等等

该值将与回发结果一起发回,我只是deserialize从保存的值中恢复我的小部件.很烦人,但效果很好.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有