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;
}
}
}
謝謝,我會盡力的。 – user3809837 2015-03-19 11:49:39
您可以隨時將所有內容放在單獨的div中。一旦第一個帖子隱藏並顯示其他內容,則在第二次回發時再次切換它們。 – JLane 2015-03-19 13:17:52
我已經使用上面的答案中的代碼開發了一個正在運行的示例,您是否可以將答案標記爲已接受?下午我,如果你想我發送給你完整的源代碼。 – RobD 2015-03-20 16:34:01