0

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

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

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

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

为什么是这样?这是“ PEBKAC ”的案例吗?

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

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

4

3 回答 3

1

这在我看来好像视图状态让你成为一个糟糕的笑话(经常)。我的猜测是,当页面回发时,隐藏字段会使用 Viewstate 中包含的值进行初始化。

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

于 2009-09-17T13:41:02.557 回答
0

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

请看这个-->

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

于 2009-09-17T12:28:48.120 回答
0

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

这样你就可以使用 justOnClick而不是OnClickand OnClientClick

于 2009-09-17T13:16:51.153 回答