JavaScript触发的UpdatePanel未正确更新

JavaScript触发的UpdatePanel未正确更新,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,我正在从事一个大型、复杂的ASP.NET项目 我有一个动态加载的web用户控件,其UpdatePanel无法正确更新。UpdatePanel是从JavaScript函数触发的 我已经设法创建了一个非常简化的项目来演示这个问题,并将其发布在了 如果有人对这些技术有更深入的了解,能为我指明正确的方向,我将不胜感激。尝试在UpdatePanel的OnPreRender事件中设置文本框值,而不是在OnLoad中设置文本框值。我想我找到了发生的事情。我知道UpdatePanel回发与普通回发类似,但只将页

我正在从事一个大型、复杂的ASP.NET项目

我有一个动态加载的web用户控件,其UpdatePanel无法正确更新。UpdatePanel是从JavaScript函数触发的

我已经设法创建了一个非常简化的项目来演示这个问题,并将其发布在了


如果有人对这些技术有更深入的了解,能为我指明正确的方向,我将不胜感激。

尝试在UpdatePanel的OnPreRender事件中设置文本框值,而不是在OnLoad中设置文本框值。

我想我找到了发生的事情。我知道UpdatePanel回发与普通回发类似,但只将页面的一部分发送回客户端。所以我玩了一会儿,发现半履带式列车员所说的方法果然奏效了。然后,我让谷歌了解UpdatePanel的常见错误,发现这解释了问题所在

这就是实际发生的情况

  • __doPostback将页面的值发布到服务器
  • 在post参数中,两个文本框的值均为空
  • 在服务器上,Load事件被触发,您可以更改文本框的文本
  • 执行EventHandler,并在两个文本框上设置发布的值(它们都重置为空)
  • “更新”面板以空白值呈现
  • 因此,如果您将测试放在其中一个文本框中并按下按钮,您可以看到“测试”值进入服务器并返回

    1|#||4|356|updatePanel|MainContent_WebUserControl11_ctl00_UpdatePanel1|
            <p>
                Message:<br />
                <input name="ctl00$MainContent$WebUserControl11$ctl00$TextBox1" type="text" value="testing" id="MainContent_WebUserControl11_ctl00_TextBox1" />
            </p>
    
    1 |#| | | 4 | 356 |更新面板|主要内容|网络用户控制11 | ctl00 |更新面板1|
    
    消息:

    因此,要在更新面板中更新输入元素的值,您需要在Pre_render事件中进行更新。另一方面,您可以在On_load上更新标签,它将起作用


    希望这能有所帮助。

    是的,这似乎很有效,谢谢。不过,在我继续之前,我会尝试更好地理解这个问题。这显然与动态加载控件的时间有关。谢谢@marto。我确实看到了你链接的文章。我会再仔细阅读一遍ly。我在Pre_Render中通过做一些事情来实现这一点,但我对一些细节仍不清楚。我遇到了一个类似的问题,HiddenField尚未由Request.Form在动态控件的加载过程中填充(在OnInit期间添加).当然,我正在写一篇完整的回帖,而不是一篇局部的回帖。等到预渲染时才阅读希登菲尔德的作品,但并不令人满意。