维护用户控制回发中的公共属性状态

时间:2012-03-28 05:07:00

标签: asp.net properties user-controls session-state

我有一个用户控件,只显示我的应用程序中每个.aspx页面上的客户信息。该用户控件包含客户信息的公共属性,这些属性是从.aspx页面(例如page1.aspx)OnLoad事件设置的,并在该用户控件中显示信息。现在从此page1.aspx,重定向到page2.aspx但无法在page2.aspx usercontrol中显示信息(回发后值将丢失)。我可以通过在每个控制属性中使用会话来维护用户控件的属性状态,并且可以访问所有页面,但是会话将是昂贵的方法。请给我另一个更好的解决方案,以便我可以在回发中维护用户控件属性值。

提前致谢...

3 个答案:

答案 0 :(得分:0)

PostBack中的信息不会丢失,因为Page2.aspx在从Page1.aspx重定向后获得单独的GET请求

您可以通过以下方式进行州管理

  1. 会话状态
  2. 申请状态
  3. 查看州
  4. 缓存
  5. 查询字符串
  6. HTML网络存储
  7. 会话状态似乎是您的方案的逻辑选择,因为应用程序状态会影响所有登录用户的数据。一旦我们执行重定向,Viewstate就会丢失。对于cookie,存在大小限制问题,您需要清除存储在cookie中的数据。此外,您应该加密存储在那里的数据。查询字符串很容易被篡改。不可靠。 HTML Web存储仅在最新的浏览器中可用,因此浏览器兼容性将成为一个问题。

答案 1 :(得分:0)

另一个可能的答案 - 您可以使用CrossPagePostback。这允许Page2自动检测从Page1传递的数据。您必须在页面的加载事件中执行此操作。

重定向将始终将您带到另一个页面,这将始终丢失附加到第一页的任何状态。保持这种状态的唯一方法是不使用Web应用程序!

答案 2 :(得分:0)

将用户信息保存在会话中并尽可能少地保存在cookie中绝不是一个好主意。两者都不安全,你可以看到有一些国家的包袱,很少有理由使用它。

我建议回到绘图板并设计一个解决方案,将信息显然保存在服务器上的数据库中;即使记录在交易结束时被清除。观看该表,您会惊讶地发现有多少会话被删除,并且永远无法达到交易的“官方”结束。