asp.net在重定向上保存文本框

时间:2010-07-15 21:55:17

标签: asp.net session redirect viewstate

我是ASP.net的新手,我正在尝试在重定向上保存一些文本框的状态。我有一个带有向下钻取的仪表板界面。主仪表板页面有一个日期范围选项(开始日期和结束日期的文本框),用于显示的信息,我需要保存用户选择的日期范围。我知道我可以将信息放入会话变量中以在我重定向的页面中使用,但是当我点击下钻页面上的“返回”按钮时,它返回主仪表板页面并且文本框值丢失。我也尝试保存视图状态,但也无法使其工作。解决这个问题的最佳方法是什么?

编辑:如果重要,我实际上使用jQuery $(location).attr('href', url);进行重定向,因为我使用的一些图表对象覆盖了IE中的html或asp超链接。

2 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。

在您的重定向页面上,您正在检查会话变量,对吗?

为什么不在原始页面上检查呢?

即: 原始页面Onload:

IF NOT String.isnullorempty(Session("date")) THEN
   me.start_date.selectedvalue = Session("date")
END IF

答案 1 :(得分:0)

为了澄清您的问题:您需要在用户导航回页面时保留Date文本框的选定值。

ViewState不起作用的原因是因为您已离开页面。通过在页面中将其作为基本64位编码数据插入来传输或“记住”ViewState,因此只要您离开页面,它就会永远消失。

您需要做的是将数据保持为Session状态。然后在仪表板页面的Page.Load事件处理程序中,检查Session中已保存信息的存在,如果存在,则将其填充回文本框,否则使用默认值。

如果您要使用Session在页面之间传递值,那么我建议您使用静态常量作为每条信息的关键,如下所示:

public class MySessionKeys 
{
    public static string DateStarted = Guid.NewGuid().ToString();

    public static string DateFinished = Guid.NewGuid().ToString();
}

并在aspx页面中:

protected void Page_Loaded(object sender, EventArgs e) 
{
    Session[MySessionKeys.DateStarted] = myDateStartedTextBox.Text;
}