【发布时间】:2013-07-22 12:35:40
【问题描述】:
首先 - 如果您想要问题的简短版本,请向下滚动直到看到 QUESTION:
好吧,在过去一年左右的时间里,我遇到了很多关于动态控件的各种场景的问题 - 也就是说,通过 JavaScript 或 C# 以编程方式创建的控件然后添加到 aspx 页面。在我的工作地点添加动态控件的一种看似最喜欢的方式似乎是以下几种变体:-
ASPX
<div id='divExample'>
JavaScript
document.getElementById('divExample').innerHTML = "some random html code and controls here"
现在,在过去的一年里,我们还推动将我们的 Web 应用程序从仅 IE 转变为跨浏览器兼容 - 重点是让 Safari 启动和运行......并且出现了很多与此相关的问题到动态控件。我的高级开发人员坚持认为,没有必要对给我们带来问题的动态控件的呈现方式进行重大重新编码......
当然,经过一些研究,我得到了 ASP 生命周期的基本信息,并且动态控件需要在每次回发时重新创建 - 我相信 - 在 Page_Load 方法执行之前。因此,我通过一些相当费力的控制重新编码解决了大部分问题 - 将初始化移至 Page_PreLoad 方法并将大量 JavaScript“innerHTML = 'some string of plain html etc'”渲染更改为基于 C# 对象的初始化。
现在,无论我的某些事实是否有误,我都知道这已经奏效并解决了我的问题。现在这篇文章的症结是我一直在尝试来得到解决这个问题的确切实际原因,我相信这与渲染元素的 innerHTML 的排序有关,但没有多少搜索能够告诉我这将在 ASP 页面生命周期中确切发生的时间。我的学长会再次问为什么有必要我毫不怀疑 - 尽管不用说他所有的想法都没有奏效......
...
好吧,对不起华夫饼,简而言之:-
问题: 在 ASP 生命周期中的哪个时间点呈现元素的 innerHTML,这对于附加到以这种方式呈现的控件的事件有什么后果 - 处理这种情况的正确方法是什么?
感谢您的阅读。
【问题讨论】:
-
迁移到 .NET MVC,你会更开心,而且从 web 开发的角度来看它更有意义。 “常规” .NET 试图将桌面开发范式展示为 Web 开发,这会产生太多令人困惑的不必要抽象层。
标签: javascript asp.net dynamic innerhtml page-lifecycle