我是ASP.net的新手,我正在尝试在重定向上保存一些文本框的状态。我有一个带有向下钻取的仪表板界面。主仪表板页面有一个日期范围选项(开始日期和结束日期的文本框),用于显示的信息,我需要保存用户选择的日期范围。我知道我可以将信息放入会话变量中以在我重定向的页面中使用,但是当我点击下钻页面上的“返回”按钮时,它返回主仪表板页面并且文本框值丢失。我也尝试保存视图状态,但也无法使其工作。解决这个问题的最佳方法是什么?
编辑:如果重要,我实际上使用jQuery $(location).attr('href', url);
进行重定向,因为我使用的一些图表对象覆盖了IE中的html或asp超链接。
答案 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;
}