2009-06-09 24 views
0

我有一個嚮導風格的界面,我需要從用戶那裏收集數據。我的管理人員問我是否要逐步收集信息。一個很大的困境 - ASP.NET和jQuery

我已經決定具有與所述過程的每個步驟作爲一個單獨的用戶控件page.aspx。 step1.ascx step2.ascx等...

它現在的工作方式是當初始GET請求進來時,我呈現整個頁面(位於母版頁內)和step1.ascx。然後,當下一個POST請求進入第2步(使用查詢字符串step = 2)時,通過重寫Render(HtmlTextWriter)方法並使用jQuery html()方法替換div的內容,我只將step2.ascx渲染到瀏覽器。

這整個方法的問題,除了是哈克(在我看來)是,它是不可能的,因爲這通常是處理服務器端更新視圖狀態。

我的解決方法是將step1.ascx的內容存儲到臨時會話存儲中,因此如果用戶決定單擊後退按鈕返回一個步驟,我可以將之前存儲的值分出。

我覺得我把我的帽子易怒對這裏想嘗試最新的Javascript熱潮如jQuery的使用.NET已經採取了很多黑客等接近和逆向工程獲得的權利。簡單地使用updatepanel並完成它,還是有一個網站有一個全面的資源來使用jQuery來完成ASP.NET中的所有內容?

感謝您花時間閱讀本文。

回答

7

的另一種方法,這可能是更容易使用,是與初始GET請求加載整個形式,然後隱藏除了第一個的所有部分。然後,您使用jQuery隱藏和顯示形式的不同部分,而當顯示在最後一節整個表單被張貼在一個POST到服務器。這樣,您就可以處理服務器上的輸入,就好像數據輸入是由用戶一步完成的,並且仍然可以在客戶端獲得逐步的expreience。

+0

我有時會使用這種技術。 – yfeldblum 2009-06-09 11:56:29

+0

作爲一個優點,您可以在javascript關閉的情況下兼容瀏覽器 – 2009-06-09 13:11:01

0

你有沒有考慮使用ASP.NET Wizard control?定製用戶界面有點難度,但在其他情況下,這對我來說效果很好。

1

您可以將所有用戶控件一個接一個放置,並打開當前步驟控件的可見性並在適當時打開其他控件。不需要重寫渲染()。這樣用戶控件的viewstate將由服務器管理。您可以專注於任何步驟驗證邏輯。

使用一個UpdatePanel包含的步驟將給予AJAX的經驗,仍然能夠提供每一步驗證。如果你可以同時驗證多個步驟,Tomas Lycken的建議(用JQuery隱藏/顯示)將提供一個快速的一步一步的體驗。