2010-07-15 74 views
2

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

编辑:万一它很重要,我实际上使用jQuery $(location).attr('href', url);做重定向,因为我使用的一些图表对象覆盖IE或HTML超链接。

+0

您是否可以从原始页面的Page_Load中的会话中读取,以防从另一个页面重定向回来?我相信这是仪表板页面。无论何时加载,请检查以前输入的文本框值。 – DOK 2010-07-15 21:59:22

回答

1

你在正确的轨道上。

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

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

即: 原始页面的Onload:

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

编辑:会话数据现在持续通过重定向。例如,如果我设置var = Session [“txtEndDate”],它会很好。然而,当我尝试txtEndDate.Text = Session [“txtEndDate”]或txtEndDate = Session [“txtEndDate”]或txtEndDate.Text =(字符串)会话[“txtEndDate”]我得到一个错误。所以我现在的问题是如何从会话变量恢复日期。 – 2010-07-15 22:18:15

+0

如果你想填充一个文本框,那么这应该工作: me.txtEndDate.text = Session(“txtEndDate”) 虽然这真的是一个基本的答案 - 错误消息说什么? – dave 2010-07-15 22:55:25

+0

我解决了它与会议[“txtEndDate”] = txtEndDate.Text,txtEndDate.Text =(字符串)会议[“txtEndDate”] – 2010-07-16 15:00:27

0

所以澄清你的问题:你需要坚持的日期文本框的选择值,当用户导航回页面。

ViewState无法正常工作的原因是因为您已从页面导航。 ViewState通过将其作为基础64编码数据插入到页面中来传输或“记住”,所以只要您离开页面,它就会永远消失。

你需要做的是将数据保存到会话中,就像你一样。然后,在仪表板页面的Page.Load事件处理程序中,检查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; 
} 
+0

感谢您的输入。这看起来很不错。我有我的会话变量通过重定向。如何将值恢复到文本框? – 2010-07-15 22:36:21