代码之家  ›  专栏  ›  技术社区  ›  Bob Kaufman

如何在页面刷新之间保持控件的值/文本属性?

  •  0
  • Bob Kaufman  · 技术社区  · 14 年前

    我在一页上有两个感兴趣的控件:a DropDownList Button . 如果用户按下按钮,他将得到一个弹出表单,完成后,该表单将导致基页完全重新加载,从而丢失DropDownList中的值。澄清一下,这是一次更新,而不是回帖。我不能把它改成回邮。在整个页面刷新过程中,在下拉列表中持久化所选值的最直接方法是什么?我无法避免页面刷新,因为在弹出窗口中输入的数据反映在基页的其他位置。

    更新

    我已经拼凑出了一个我不太满意的备选解决方案:当用户单击按钮时,我使用javascript来获取下拉列表的当前值,并将其与querystring一起传递给加载的弹出窗口。当用户在弹出窗口中单击“Save”时,这将导致保存数据,然后重新加载基页,我首先将querystring值存储到会话变量中。加载时,基页将查看所述会话变量。如果存在一个值,它会相应地设置下拉列表的值并删除会话变量。

    虽然有些笨拙,但这是我能想到的最好的办法。我知道我仁慈的恩人不喜欢使用会话变量,但是考虑到页面重新加载,我无法想出替代方案。另外,由于Session变量是短暂的,在页面关闭前不久创建,然后在随后的页面打开后不久删除,我希望这是可以接受的。

    结论

    最后,在我向仁慈的捐助者描述了解决方案之后,我们同意了另一种方法:如果在DropDownList中进行了选择,则必须在打开弹出窗口之前保存它。这完全避免了整个ViewState问题。

    1 回复  |  直到 14 年前
        1
  •  1
  •   David    14 年前

    更新问题:

    根据您获取要重新加载的基页的方式,您可以向其中添加一个查询字符串,从而避免将hte值放入SessionState。但我想你可能已经考虑过了。

    但基本上,由于回发值和viewstate是不可能的,SessionState和查询字符串是唯一的实际选项。哦,除非你被允许使用HTML5本地存储?(可能没有)


    从问题更新前开始:

    如果您不能回发主表单,那么正如rockithesixstring所说,Ajax帖子可能是您所需要的。