重定向到同一页面后,保留所有输入的值

时间:2015-03-19 11:29:46

标签: asp.net

我有注册页面,其中包含许多文本框,复选框和日期选择器等。当勾选其中一个复选框时,它将重定向到子注册页面。点击子注册页面上的按钮后,它应该重定向到注册页面,我想保留我已经输入的所有值。如果我使用会话,我必须写很多行代码。还有其他办法吗?

1 个答案:

答案 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;
        }
    }
}
相关问题