2011-05-12 63 views
5

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

编辑

我的想法至今:

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

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

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

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

+0

您计划维护状态的时间有多长?每次会话? – ataddeini 2011-05-12 01:03:36

+0

最初每个会话。但是,如果我建立这个权利,我相信我可以将状态存储在数据库中,如果我想要的话,并且让我的“自定义状态管理逻辑”可以使用它。我将尽快更新我的问题 – enamrik 2011-05-12 04:40:23

+0

我不知道任何可以给你开箱的东西。我只是在Github上快速搜索了这些软件仓库,但没有发现任何对我有用的软件(可能值得在Codeplex上查看更彻底的内容)。这就是说你的方法听起来很不错。 HtmlHelpers是我想要的方式。 – ataddeini 2011-05-12 12:12:17

回答

2

我猜KnockoutJS可以帮助你,因为你可以巩固它所有的数据/状态管理逻辑,然后坚持它使用.toJSON()功能,并将其发送到服务器,你喜欢的方式,即。

也许你可以将它与@ Schwarty的localStorage解决方案集成?

+0

我喜欢KnockoutJS/localStorage组合方法的想法! – 2011-05-12 05:35:27

+0

感谢您的建议。 KnockoutJS看起来很棒。但这是与html元素的数据绑定。我正在谈论维护UI组件的状态(例如手风琴,浮动div),其中有许多html元素。他们的状态只能通过他们的js库对象来使用。 – enamrik 2011-05-12 07:46:26

+0

@enamrik你看过这些:http://knockoutjs.com/documentation/style-binding.html和http://knockoutjs.com/documentation/css-binding.html?例如,您可以将ui-state-active类或顶部和左侧样式属性绑定到视图模型。 – 2011-05-12 16:15:57

1

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

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

0

如果用户代理支持,您可以使用localStorage(大部分做),并回落到饼干,甚至会,如果他们不(假设你的范围是确定与被保存在用户的UI状态在单个机器级别而不是在多个设备使用中保持该状态)。我有一篇关于如何在MVC 3中使用Modernizr来检查localStorage支持并从中保存/检索的文章。
Learn how to use Modernizr from the ASP.NET MVC3 Tools Update to store user data via HTML5 localStorage