ASP.NET:JavaScript 在提交前修改 HiddenField 的值
-
08-07-2019 - |
题
我在 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
而不是两者 OnClick
和 OnClientClick
.