首先 - 如果您想要问题的简短版本,请向下滚动,直至看到问题:
好的,过去一年左右我在动态控件的各种场景中遇到了很多问题 - 也就是说通过JavaScript或C#以编程方式创建的控件然后添加到aspx页面。在我的工作场所添加动态控件的一种看似最喜欢的方式似乎是以下各种变体: -
ASPX
<div id='divExample'>
的JavaScript
document.getElementById('divExample').innerHTML = "some random html code and controls here"
现在,在过去的一年里,我们还推动将我们的网络应用程序从IE转换为跨浏览器兼容 - 重点是让Safari启动并运行....并且已经出现了很多问题与动态控制有关。我的资深开发人员坚持认为,对于给我们提出问题的动态控制如何进行重大改编应该是必要的......
当然经过一些研究后我得到了ASP生命周期,并且在执行Page_Load方法之前需要在每次回发时重新创建动态控件这一事实。所以我通过一些相当费力的控制重新编码来解决大多数问题 - 将初始化移动到Page_PreLoad方法并更改了很多JavaScript&#34; innerHTML =&#39;一些简单的html等字符串&#39 ;&#34;渲染到基于C#对象的初始化。
现在不管我是否在这里弄错了一些我的事实,我知道这有效并解决了我的问题。现在这个帖子的关键是我已经尝试来获得这个整理的确切实际推理,我相信这与渲染orHTination of innerHTML元素有关,但是没有多少搜索已经能够告诉我何时会在ASP页面生命周期中发生这种情况。我的老人会问我为什么有必要再毫无疑问 - 尽管不用说他的所有想法都没有用到......
...
很抱歉华夫饼干,简而言之: -
问题: 在ASP生命周期的什么时候,元素的innerHTML会被渲染,这会对附加到以这种方式呈现的控件的事件产生什么影响 - 以及处理这个问题的正确方法是什么?
感谢所有投入,感谢阅读。
答案 0 :(得分:0)
将在ASP.net生命周期完成后呈现javascript innerHtml属性,因为它发生在服务器端。因此,它对生命周期内的C#代码没有任何影响。
关于回发,请考虑回发一个全新的请求 - 在完成所有服务器端事件后,需要重新生成控件。