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