2011-08-10 28 views
0

我正在構建具有多個頁面的應用程序。第一個aspx頁面有用戶選擇選項,這些選項大多是單選按鈕和下拉菜單。第二頁有另一類用戶選擇選項,等等直到第4頁。在用戶點擊第4頁aspx頁面上的提交按鈕時,所有選擇都應存儲在sql表中。訪問在頁面後面的一個代碼中實例化的類對象,在頁面後面的不同代碼中.net

我有一個類(非靜態)的屬性來存儲所有的用戶選擇。我的問題是,如何訪問在page1代碼中實例化的類對象,在代碼中是否存在其他頁面,以便我可以將所有選擇存儲在該對象的屬性中,並將這些特性的值存儲在第4頁的SQL中。 我無法使用會話,因爲會有100多名用戶,並可能導致我的應用程序崩潰。另外我想在SQL中一次存儲所有選擇以減少多個SQL調用。

回答

0

爲什麼不直接用第一頁創建記錄,並用每個其他頁面更新記錄,將記錄ID存儲在會話中?

插入記錄與從第1頁和無效的問題,爲其他數據庫。檢索插入記錄的記錄ID並將其存儲在會話中。

第2頁

更新與來自第2頁的問題,數據庫中的記錄,使用id會話

N頁

重複

這也爲您提供了允許的選項用戶返回並取回他們離開的地方。作爲一個便箋,我可能會在用戶甚至回答任何問題之前創建記錄,這樣他們就可以安全地使用後退按鈕訪問頁面1並更改他們的答案。

+0

我不明白你的第一個建議。你能解釋一下嗎?他們必須是不同的頁面,因爲我需要顯示一個sitemappath,所以我不能使用用戶控件。 – user648610

+0

更新了一些更詳細的答案 – agradl

0

由於您不想使用會話,因此您可能希望將每個頁面的選擇存儲在cookie中。這可以完成客戶端(使用JavaScript)。

在最後一頁上,您將實例化您的類並從其他Cookie中設置其屬性。

+0

對不起,我不能使用JavaScript,因爲我需要支持JavaScript和Cookie在瀏覽器中禁用的人。 – user648610

+0

@ user648610:我認爲你使用的是ASP.NET(顯然不是這種情況,因爲需要JavaScript?) – M4N

0

ASP.NET不支持跨頁回發,它允許您將頁1回發到頁2,並從第二頁後面的代碼中的第一頁訪問控件。你可以在這裏找到更多關於MSDN的信息:http://msdn.microsoft.com/en-us/library/ms178139.aspx。它會花費一點時間才能讓它工作超過四頁,並且它不會非常漂亮,但它應該是可能的。

我知道你想要減少SQL調用,但是我個人可能會考慮在數據庫中添加某種保存表,並在用戶瀏覽表單的四個頁面時將數據添加到該表中。

例如說,第一頁有一個名爲first name的字段,第二頁有一個名爲last name的字段,第三頁有一個名爲date of birth的字段。我會創建一個帶有ID,名字,姓氏和出生日期列的數據庫表。當用戶完成第一頁時,我會在該表中創建一行並將第一個名稱保存到該表中。如何管理數據庫中的標識符取決於您,但是我會使用ASP.NET配置文件提供程序獲取標識並將其保持在會話狀態或匿名用戶配置文件中。

當用戶完成第二頁時,我會從會話中或後面存儲它的位置獲取ID,然後在數據庫中對該行進行更新以保存第二個名稱等等。當它進入最後階段時,您可以將所有已保存的數據從數據庫中提取出來,並通過您需要的任何業務邏輯運行。

畢竟說了算,你可以從該保存表中刪除數據,因爲它現在應該保存在最終狀態的其他地方。如果你確實走了這條路,那麼最好每隔一段時間就移除部分完成的數據。這可能是一個安全的選擇,如果有人在三小時前填寫第1頁,他們不會回來完成剩下的工作。

相關問題