如何在Postback上维护UI元素状态? (ASP.NET MVC)

时间:2011-05-12 00:57:17

标签: javascript jquery jquery-ui asp.net-mvc-3

所以我打算创建一个包含许多可动画UI元素的复杂页面。我想想出一个干净的方法来维护这些可动画UI元素的状态(展开/折叠,突出显示等)。我有一些想法,但我只是想知道是否有人知道一些js框架这样做所以我不重新发明轮子。

修改

到目前为止我的想法是:

1)在表单帖子上,获取每个UI元素的状态并将其添加到POST数据中。我正在考虑使用一个特殊的CSS类(一种用于跟踪的注册)来标记我想要跟踪状态的所有UI元素,并且每个都支持一些回调,这将允许我以多态方式获取其状态(每个UI元素)有它自己对状态的理解,例如扩展,选定的索引,突出显示等)

2)为我的UI元素创建HtmlHelpers,它可以识别从客户端发送的状态信息,并以正确的状态输出UI元素的html(我更喜欢在服务器端设置状态,而不是让js弹出全部的东西试图在客户端恢复状态的地方......对吗?)

3)不像WebControls或ViewState那样复杂或臃肿

是否有一个框架可以做到这样的事情并且做得更好,如果没有,我建议的框架听起来是个好主意吗?

3 个答案:

答案 0 :(得分:2)

我猜KnockoutJS可能对您有所帮助,因为您可以合并其上的所有数据/状态管理逻辑,然后按照您喜欢的方式保留它,即使用.toJSON()函数并将其发送到服务器

也许您可以将它与@ Schwarty的localStorage解决方案集成在一起?

答案 1 :(得分:1)

我过去做过类似的事情并使用了jQuery cookie插件。这可能是一个可行的选择,它只取决于您需要多长时间来维护状态,以及您是否可以依赖启用了cookie的用户。

http://plugins.jquery.com/project/Cookie

答案 2 :(得分:0)

如果用户代理支持(大多数情况下),您可以使用localStorage并返回cookie,如果不支持,则可以使用会话(假设您的范围正常,用户的UI状态保存在单个机器级别,而不是在多个设备使用中保持该状态)。我有一篇文章介绍如何在MVC 3中使用Modernizr检查localStorage支持并从中保存/检索。
Learn how to use Modernizr from the ASP.NET MVC3 Tools Update to store user data via HTML5 localStorage