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