我觉得我可能在这里忽略了页面生命周期的基本概念,并且(因为我无法弄清楚正确的关键字或者没有被问到)无法找到现有的答案所以请原谅我。
基本上,我需要在客户端和服务器端之间保留一个可变对象。由于viewstate是加密/序列化的,并且会话状态只是服务器端,我的解决方案是使用隐藏字段 - 这很简单,对吧?那么这就是我的问题......看起来好像它正在工作,但数据没有像我预期的那样传播。
由于一些原因,这让我感到有些困惑......首先是我以前从未使用过“LoadComplete”事件,似乎无法找到任何表明它是必要的例子,甚至是它应该这样做。第二个是,在引发加载完成时,已经触发了依赖于客户端数据的其他事件。
任何帮助/解释/建议;地狱,甚至批评赞赏!
谢谢,杰森
答案 0 :(得分:2)
我正在回答这个问题,希望这有助于拯救别人几个小时。经过多次试验并最终获得成功后,我了解到您可以在OnInit事件期间获得HiddenField值。给定ID为hidValue的HiddenField,关键行为:
string strValue = Request.Form[hidValue.UniqueID].ToString();
答案 1 :(得分:1)
<强>释强>
您可以在javascript中更新HiddenField
值并将其返回到服务器
如果您希望在Load
之后您的对象可用,则使用LoadComplete
即可
如果您希望此对象在加载时可用于所有控件,则最早可以通过重载PreLoad
并在那里创建对象来从输入中获取数据。
你的逻辑没有问题。
<强>结论强>
你实施它有一些错误。
让我们现在看一下代码。
答案 2 :(得分:1)
我在ASP.NET生命周期中扯了很多头发:-)。我会建议你这个:
在这种情况下,您应该在页面/用户控件中声明受保护的HiddenField
。所以你真的想要绑定到ValueChanged event,而忘记其余的。