2011-05-12 64 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