我在 Stack Overflow 上查看过类似的问题,但无法找到这个特定问题的解决方案。我有一个简单的(不是真的,但让我们假装)ASP.NET 页面,其中有一个更新面板。

在此更新面板中有一个 HiddenField 控件的值将通过我自己的自定义 JavaScript 设置/更新。价值 正如我在 DOM 中使用 Firebug 看到的那样进行了更新。

在此旁边 HiddenField 有一个 LinkButton 它调用 JavaScript 来修改 HiddenField 使用 OnClientClick (这有效)。这 LinkButton 还有一个 OnClick 修改值后执行的处理程序。

然而,在 OnClick 处理程序,我得到的初始值 HiddenField 而不是 JavaScript 设置的值!

为什么是这样?这是否属于“聚醚醚酮"?

编辑: 尝试了同样的事情 TextBox 没有任何成功。还尝试在提交表单之前使用 Firebug 手动修改该值,但没有成功。

编辑2: 我刚刚意识到 Page_Load 在之前被调用 OnClick 处理程序,这把事情搞砸了。我不会删除这个问题,因为其他人可能也有同样的问题,并且可能会发现这个问题很有价值。

有帮助吗?

解决方案

您必须使用 AJAX 更新面板提供的 EndRequestHandler 事件来完成此操作。

请看这个-->

http://www.codeproject.com/KB/ajax/AfterAjaxUpdate.aspx?display=Print

其他提示

在我看来,这似乎是视图状态给你开了一个糟糕的玩笑(就像经常发生的那样)。我的猜测是,当页面回发时,隐藏字段将使用 Viewstate 中包含的值进行初始化。

尝试一件事:不要直接通过访问该值 yourHiddenField.Value 但在页面的 OnInit 中获取它 Request.Forms[yourHiddenField.UniqueId] 并将其转换为 HiddenField 并提取值。我不确定这是否是正确的语法。如果我没记错的话,“发布”值应该位于 Request 对象中的某个位置。看看你是否获得了那里的价值。如果你得到它,问题是在页面的 OnInit 事件之后映射回的视图状态。然后我们必须找到解决方案......

您如何在客户端上生成新输入?是否可以在服务器上执行此操作?

这样您就可以使用 OnClick 而不是两者 OnClickOnClientClick.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top