2015-03-19 41 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

相关问题