2012-03-28 54 views
0

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

在此先感谢...

回答

0

的信息不回发丢失的Page2.aspx从Page1.aspx的

做一个重定向

有后得到一个单独的GET请求低于方法,使您可以做状态管理

  1. 会话状态
  2. 应用程序状态
  3. 视图状态
  4. 饼干
  5. 查询字符串
  6. HTML的Web存储

会话状态是什么似乎是为您的方案的合理选择,随着应用程序的状态会影响到的所有数据都记录在谁的用户。一旦我们做了重定向,Viewstate将会丢失。对于cookie,存在大小限制问题,您需要清除存储在cookie中的数据。此外,你应该加密存储在那里的数据。查询字符串很容易被篡改&不可靠。 HTML网络存储只适用于最新的浏览器,因此浏览器的兼容性会成为问题。

0

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

重定向将始终带您到另一个页面,并且这将始终失去附加到第一页的任何状态。您可以像这样维护状态的唯一方法是不使用Web应用程序!

0

将用户信息保存在会话中并尽可能少地保存在cookie中永远不是一个好主意。这两者都不安全,因为你可以看到有一些国家行李很少证明它的使用。

我建议回到绘图板并设计一个解决方案,将信息显式保存在服务器上的数据库中;即使记录在交易结束时被清除。观察这张表,你会惊讶地发现有多少会话被放弃,从未到达交易的“官方”端。