2011-04-27 62 views
-1

我是ASP.NET新手。我在Asp.NET和C#中設計了一個用戶界面,用戶可以登錄然後啓動一個應用程序。使用此應用程序時,用戶必須填寫10頁長的表單。在ASP.NET中從一個頁面切換到另一個頁面時將數據保存在網頁上?

因此,我已經使用了導航菜單,並以這樣的方式設計了界面,其中每個頁面都是不同的菜單項,並且它是一個靜態菜單。用戶填寫表單第一頁的詳細信息並保存,數據保存在數據庫中。

問題是他通過單擊菜單選項卡移動到另一個頁面;當他通過使用該頁面的菜單選項卡回到第一頁時,所有填充的數據都消失了,他看到一個空白頁面。我知道它是如何工作的,但是我希望它能夠在一次會議上填寫第二頁上的數據(在填寫第一頁上的數據之後),然後回到第一頁,他應該能夠查看他填寫的數據。

我可以使用什麼樣的概念?我不確定視圖狀態在這種情況下會有所幫助。

+0

我已經整理了這個老問題,包括刪除緊急請求(我們要求人們不要這樣做,並提醒他們讀者大多是志願者,他們會在閒暇時回答)。你有回覆你的任何助手嗎?請考慮投票和/或接受它們;這樣做會幫助幫助者幾點,反過來會鼓勵他們再次幫助。 – halfer 2015-11-12 18:36:51

回答

2

你應該研究使用會話狀態變量來存儲他在整個會話中的信息。如果用戶登錄,則應考慮將他輸入數據庫的信息存儲在布爾狀態「ApplicationFinished」中,以檢查他是否已完成該信息。否則,我會在每個頁面上打一個電話來從數據庫中檢索已添加的信息,以便他可以在不同時間或一次填寫信息。

http://msdn.microsoft.com/en-us/library/ms178581.aspx

會話狀態可能會過於長期的你,如果是這樣的話做的ViewState一些研究。有很多不同的方法來解決這樣的問題。這完全取決於哪種技術最適合您的需求。

http://msdn.microsoft.com/en-us/library/ms972976.aspx

此外,如果您使用的是標籤系統考慮使用AJAX的標籤,這樣的數據將保持在即使在通過不同的標籤跳格的形式。

http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/

0

好吧,如果你是寫在數據庫中的數據,我想最好的(快)的解決方法是一個名叫列「已完成」添加到表中保持這個信息。如果「已完成」標誌未設置爲1,則加載數據庫信息並填充頁面控件。

當您在數據庫中創建新記錄時,獲取記錄的ID並將其設置爲Session。如果用戶回到第一頁(前一頁),則可以恢復信息ID並加載數據。

0

只要您正在學習新的東西......將jquery添加到列表中,並利用JQuery Wizard Plug In。它可以讓你將你的「10頁表格」整合到一個單元中,然後再進行細分,路由和管理。您可以利用AJAX保存每一步,同時提供內置的導航和驗證方法。

0

我建議你切換到使用客戶端JavaScript來控制你的標籤。這樣,當您在選項卡之間來回切換時,表單數據會保留在字段中。您可以使用JavaScript按鈕來指導用戶從標籤頁到標籤頁。

我已經完成了這個使用JQuery。我實際上有150個需要被捕獲的領域(他們都是必需的)。我像不同標籤上的數據一樣,然後有按鈕('<上一個','下一個>'),這將激活不同的標籤。

完成後,顯示'保存'按鈕。

0

這不是您要查找的內容,但是如果您的問題是您希望以前填充的頁面的所有輸入在用戶導航回到該頁面時顯示出來,並且您已經保存了所有這些信息,那麼你可以嘗試這樣的事:

HTML

<input type="text" id="yourID" name = "yourName" value = "<%=data%>"/>

然後,所有你需要做的代碼設置datapublic落後。然後獲取data的值只需撥打數據庫即可。

請確保您在初始化調用public string data = "";或任何類型的設備上使data爲空。這樣,如果沒有信息,那麼這將是空白的,如果有保存的信息,然後將它充滿

您也可以嘗試通過params通過在url像這樣所有的數據。

C#

Response.Redirect("webpage.aspx?data=" + data + "&data1=" + data1);

或者雖然JavaScript的:

window.location = ("webpage.aspx?data=" + data + "&data1=" + data1);

爲了得到要求做到這一點:

if (Request.Params.AllKeys.Contains("data")) 
{ 
    data = Request.Params["data"];  
} 

這種方式是不太理想的,雖然如果有傳遞大量的數據。

相關問題