Asp.net 如何持久化控件';页面刷新之间的s值/文本属性?

Asp.net 如何持久化控件';页面刷新之间的s值/文本属性?,asp.net,controls,persistence,Asp.net,Controls,Persistence,我在一个页面上有两个感兴趣的控件:一个下拉列表和一个按钮。如果用户按下按钮,他会得到一个弹出表单,完成后,会导致基本页面完全重新加载,从而丢失DropDownList中的值。澄清一下,这是一次刷新,不是回发。我无法将其更改为回发。在整个页面刷新过程中,在DropDownList中保留所选值的最直接方法是什么?我无法避免页面刷新,因为在弹出窗口中输入的数据会反映在基本页面的其他位置 更新 我拼凑了一个我并不十分满意的简短解决方案:当用户单击按钮时,我使用javascript获取下拉列表的当前值,并

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

更新

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

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

相反的意见,反驳我的解决方案或推理,是热烈欢迎的

结论


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

更新问题:

您正在尝试的解决方案听起来应该是可行的。这不是您想要使用SessionState的类型,但是这里有一些要求使情况变得异常

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

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


在问题更新之前:

如果正在回发aspnetForm,则应通过回发值自动保留该值。因此,首先要知道的是,您的表单是如何进行回发的,还是以其他方式刷新页面

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


此外,如果您正在将数据源绑定到DropDownList或尝试自己持久化所选的值,请检查并重新思考。

所有这些都应该在看到页面时自动完成。因此,我们可以看到您是如何进行弹出表单和回发的。@David,@rickinthesixstring--我已经更新了问题,以包括我当前的方法并澄清我的限制。这是重新加载而不是回发,我也不能更改页面以使其如此。我正在更新问题以澄清这一点。