我正在构建一个 asp.net webforms (3.5 sp1) 应用程序,使用 jquery 可以对 UI 进行动画处理,更改其状态。在我开始进行回发之前,它一直工作得很好,其中 UI 显然将自身重置为初始状态。
所以我的问题是,在回发之间保存和恢复 jquery/UI 状态的最佳实践是什么?
谢谢,埃吉尔。
Update:非常感谢大家,很好的意见,可惜我无法将多个答案标记为“答案”。
我通常通过 AJAX 将菜单状态或过滤器(div 中的一组输入)可见性等内容存储在会话中的服务器端。当菜单展开或显示过滤器时,单击处理程序将向 Web 服务触发 AJAX 事件,该事件将记录用户会话中菜单或过滤器可见性的状态。在回发时,我使用与每个菜单/过滤器对应的会话变量通过 CSS 设置其初始状态。我发现这是更好的用户体验,因为页面没有flash如果您在客户端进行更改,则加载后由 javascript 更新它。
示例——因为我正在路上,所以这不是项目中的实际代码,并且可能不完整。使用 jQuery。 Web 服务的 Url 将取决于您实现 Web 服务的方式。我(主要)使用 ASP.NET MVC,所以我的将是一个控制器操作。
<script type='text/javascript'>
$(document).ready( function() {
$('#searchFilter').click( function() {
var filter = $(this);
var filterName = filter.attr('id');
var nowVisible = filter.css('display') === 'none';
if (nowVisible) {
filter.show();
}
else {
filter.hide();
}
$.post('/controller/SetFilterVisibility',
{ name: filterName, visibility: nowVisible } );
});
});
</script>
<div id='searchFilter' <%= ViewData["searchFilterVisibility"] %> >
...
</div>
服务器端代码
[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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)