2011-07-22 41 views
2

我很難包裝如何合併jQuery/clientside javascript和asp.net以及整個頁面生命週期模型。我們舉一個具體的例子。如何使用jquery製作高級交互式asp.net serverside控件?

我有以下3個列表,它們可能是一個gridview,一個列表框或一個自定義控件。

List 1 - a list of search results 
List 2 - an empty list 
List 3 - an empty list 

現在,我想從列表1拖動一個搜索結果列表到2或3的能力,而且我想從表2拖動搜索結果到3的能力,或者列出3到2。

這個問題實際上並沒有用jQuery來實現這個功能,問題出現在需要提交的時候,提交可能會在您實際刪除一個項目時完成,或者可能有專門的按鈕來執行提交。

如果您只是做回發,那麼服務器端控件的視圖狀態會覆蓋jQuery添加到客戶端控件上的值,並且當頁面再次呈現時,所有內容都會被遺忘。

您如何將整個客戶端與服務器端綁定在一起?

一個可能的解決方案是將值存儲在隱藏字段中並讓回發利用該隱藏字段來恢復其具有的值,但我覺得這個解決方案臃腫,考慮到在「舊時代」使用正確的發佈數據發佈帖子到頁面。

回答

0

的問題是,你必須用你的DOM,你的jQuery腳本維護,但是您在到服務器的往返中丟失了該狀態。

要保留該狀態信息,您必須將其置於隱藏字段(或cookie,甚至是HTML5脫機存儲)中,但更好的解決方案是完全避免回發,並允許您的控件通過AJAX與服務器交互調用。然後,即使您與服務器交互,您的客戶端狀態也會保留。

+0

此外,您提到的3種列表類型在瀏覽器中不會保留任何狀態以回傳,因此您必須使用隱藏控件。在移動事物時使用ajax調用會更好。 –

+0

我已經或多或少地得出結論:必須處理視圖狀態和webforms是***中的一個痛苦,當你開始做更多「花哨」的事情時,我已經開始將我的應用程序移植到asp.net mvc 3 :) – thmsn