在回发时通过客户端更改了保留控制/元素值

时间:2012-12-11 07:09:59

标签: javascript asp.net ajax

我在ASP.NET 4.0的一个应用程序中使用Jquery AJAX。它是一个Web应用程序。 我使用了服务器端编码+客户端编码方法,即使用Jquery,JS和AJAX。

我有一些包含在div元素中的控件,我通过dropdownlist的客户端索引更改事件使它们隐藏/显示。

当由于服务器端验证或任何其他实例而发生回发时,div会保留旧值,这些值是其初始状态。例如:div第一次可见,我通过客户端下拉列表的索引更改隐藏它,所以当回发时它再次可见虽然它应该被隐藏。

我已经使用hiddenfield来存储值,并在jquery document.ready event中通过Hiddenfield显示/隐藏div。

现在,我想问一下是否有任何其他方法可以获得理想的结果。我期待一些标准的方法来做到这一点,因为现在几乎所有的应用程序都是客户端和AJAX启用。

1 个答案:

答案 0 :(得分:0)

如果要重新加载整个页面,则必须将状态存储在某处。 AJAX允许您减少/消除页面的完全重新加载,因此它提供了保持状态的错觉。

ASP.Net(我假设问题中的网络表单)可以通过在Visible中添加属性来“记住”某些值(例如div的{​​{1}}属性) 。这通常需要完整的回发或ViewState(两者都不太理想,但确实有效)。

其他替代方案

  • 隐藏的字段很适合很多东西。
  • Cookie适用于特定情况(保持小巧 - 记住每次请求都会发送!)
  • 当您想要存储服务器不需要了解的任何客户端值时,Web浏览器中的本地存储非常有用。