2015-03-19 145 views
0

我有註冊頁面,其中包含許多文本框,複選框和日期選擇器等,當勾選其中一個複選框時,它將重定向到子註冊頁面。點擊子註冊頁面上的按鈕後,它應該重定向到註冊頁面,我想保留我已經輸入的所有值。如果我使用會話,我必須寫很多代碼。還有其他的方法嗎?重定向到同一頁後保留所有輸入的值

回答

0

如果用戶要離開頁面導航,您將不得不使用會話,這是沒有辦法的。

也許可以不重定向用戶,並將子註冊元素放在同一頁面上,隱藏並根據需要使用JavaScript顯示。

如果您必須離開,那麼您必須使用會話。在這種情況下,爲了減少所需的代碼量,可以開發一個使用會話備份屬性的自定義控件(以下是一個示例:https://www.daniweb.com/web-development/aspnet/code/431276/session-backed-properties

然後,您可以重新使用此自定義控件更換所有的文本框(您可能需要爲使用的每個類型,文本框,下拉菜單等自定義控制)

這是一個帶會話支持值的用戶控制的實現:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SessionTextBox.ascx.cs" Inherits="WebForms_Tests.UserControls.SessionTextBox" %> 

<asp:TextBox runat="server" ID="theTextBox"></asp:TextBox> 

代碼背後:

public partial class SessionTextBox : System.Web.UI.UserControl 
{ 
    protected string SessionValue 
    { 
     get 
     { 
      object temp = Session["sessionBackedControlValue:" + this.UniqueID]; 
      return temp == null ? string.Empty : temp as string; 
     } 
     set 
     { 
      Session["sessionBackedControlValue:" + this.UniqueID] = value; 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (IsPostBack) 
     { 
      SessionValue = theTextBox.Text; 
     } 
     else 
     { 
      theTextBox.Text = SessionValue; 
     } 
    } 
} 
+0

謝謝,我會盡力的。 – user3809837 2015-03-19 11:49:39

+0

您可以隨時將所有內容放在單獨的div中。一旦第一個帖子隱藏並顯示其他內容,則在第二次回發時再次切換它們。 – JLane 2015-03-19 13:17:52

+0

我已經使用上面的答案中的代碼開發了一個正在運行的示例,您是否可以將答案標記爲已接受?下午我,如果你想我發送給你完整的源代碼。 – RobD 2015-03-20 16:34:01