Javascript ASP生命周期、InnerHtml和动态控件

Javascript ASP生命周期、InnerHtml和动态控件,javascript,asp.net,dynamic,innerhtml,page-lifecycle,Javascript,Asp.net,Dynamic,Innerhtml,Page Lifecycle,首先-如果你想要问题的简短版本,向下滚动直到你看到问题: 好吧,在过去一年左右的时间里,我遇到了很多关于动态控件的问题——也就是说,通过JavaScript或C#编程创建的控件,然后添加到aspx页面。在我的工作场所添加动态控件的一种似乎最受欢迎的方式似乎是以下几种:- ASPX 在过去的一年里,我们还推动将我们的web应用程序从只支持IE的模式转变为跨浏览器兼容的模式——重点是让Safari启动并运行。。。。与动态控制相关的许多问题已经出现。我的高级开发人员坚持认为,没有必要对给我们带来问题的

首先-如果你想要问题的简短版本,向下滚动直到你看到问题:

好吧,在过去一年左右的时间里,我遇到了很多关于动态控件的问题——也就是说,通过JavaScript或C#编程创建的控件,然后添加到aspx页面。在我的工作场所添加动态控件的一种似乎最受欢迎的方式似乎是以下几种:-

ASPX

在过去的一年里,我们还推动将我们的web应用程序从只支持IE的模式转变为跨浏览器兼容的模式——重点是让Safari启动并运行。。。。与动态控制相关的许多问题已经出现。我的高级开发人员坚持认为,没有必要对给我们带来问题的动态控件的呈现方式进行重大的重新编码

当然,经过一些研究之后,我发现ASP的生命周期已经基本上解决了,而且在每次回发(我相信是在执行Page_Load方法之前)都需要重新创建动态控件。因此,我已经通过一些相当费劲的控件重新编码解决了大部分问题——将初始化移到Page_PreLoad方法,并将大量JavaScript“innerHTML='some string of plain html etc'”呈现改为基于对象的初始化

现在,不管我是否把我的一些事实弄错了,我知道这起了作用,解决了我的问题。现在,这篇文章的关键是我一直在尝试整理这篇文章的确切原因,我相信这与呈现元素的innerHTML排序有关,但是没有多少搜索能够告诉我在ASP页面生命周期中到底什么时候会发生这种情况。我的前辈会再次问我为什么有必要这么做,我毫不怀疑——尽管不用说,他所有的想法都没有奏效

好的,对不起,简而言之:-

问题: 在ASP生命周期的什么时候呈现元素的innerHTML?对于以这种方式呈现的控件所附加的事件,这会产生什么后果?正确的处理方法是什么


感谢您的阅读。

javascript innerHtml属性将在ASP.net生命周期结束后呈现,就像服务器端一样。因此,它在生命周期内不会对C#代码产生任何影响


关于回发,考虑回发一个全新的请求-在所有服务器端事件完成后,您的控件将需要重新生成。

移动到.NETMVC,您将变得更加快乐,并且从Web开发的角度来看,这将更有意义。“regular.NET试图向horn展示一种桌面开发模式,这种模式会在web开发中产生太多不必要的抽象层。好吧-这很有意义,听起来很可靠,并且验证了我已经想到的(澄清)。如果它发生在生命周期结束之后,那么事件将无法正确连接。。。现在我想,这些问题大部分都出现在从asp->aspx转换/升级的页面上。。。猜测两者之间存在一些生命周期差异,这就是它们以前工作的原因。。。。谢谢你的输入@男爵:没问题。作为补充说明,您可能不希望将JS中动态生成的元素视为“控件”,而更多地将其视为静态HTML。听起来您可能真的想使用在页面生命周期内动态生成的控件,这是一个很好的起点。根据页面的复杂性(例如,转发器),在我之前的评论中,对于这个示例中更通用的方法,可能会有额外的要求。这解决了这些问题的几个好方法。当涉及到动态地创建控件时,我现在已经很好地处理了这个问题。然而,我们有一些“遗留控件”,它们又丑又笨重,我们基本上是想用尽可能少的工作实现跨浏览器。出于某种原因,我的高级开发人员希望保留旧的东西,而不是升级到像telerik datepicker这样方便的小东西(即使telerick控件已经在整个系统中使用)。大多数情况下,这种方法比简单的升级要花费更多的时间,但是。。。。你能做什么?
<div id='divExample'>
document.getElementById('divExample').innerHTML = "some random html code and controls here"