C# 关于在aspx中以编程方式添加控件的几个问题
我只是想问一些关于在C# 关于在aspx中以编程方式添加控件的几个问题,c#,asp.net,page-lifecycle,dynamic-controls,C#,Asp.net,Page Lifecycle,Dynamic Controls,我只是想问一些关于在aspx中以编程方式添加控件的问题。在做了一些研究之后,我只想确保我正确地理解了这一点 当您尝试以编程方式添加控件时,您应该在页面生命周期的特定阶段执行此操作 是您可以通过编程方式创建和添加控件的最新版本,位于页面\u load 在初始化阶段创建控件是否是最佳做法,是否因为这是在视图状态加载之前 每次回发后,您是否必须继续重新创建控件?或者有没有一种方法可以创建一次并使其持久化 如果您更改视图状态中存在的onInit阶段中的任何控件,当加载视图状态时,是否会自动替换该控件 是
aspx
中以编程方式添加控件的问题。在做了一些研究之后,我只想确保我正确地理解了这一点
当您尝试以编程方式添加控件时,您应该在页面生命周期的特定阶段执行此操作
是您可以通过编程方式创建和添加控件的最新版本,位于页面\u load
在初始化阶段
创建控件是否是最佳做法,是否因为这是在视图状态
加载之前
每次回发后,您是否必须继续重新创建控件?或者有没有一种方法可以创建一次并使其持久化
如果您更改视图状态
中存在的onInit
阶段中的任何控件,当加载视图状态
时,是否会自动替换该控件
是否添加子控件?例如,如果您尝试添加一个表格,其中充满了按钮的GridView,单击其中一个按钮时是否会出现部分回发
?如果没有,您应该如何将子控件添加到UpdatePanel
这就是我现在能想到的所有问题。你们能给我的任何澄清都会很好 假设您谈论的是webforms,而不是mvc,那么您可以在生命周期的任何阶段添加新的动态控件。但是,重要的是要记住,每次回发(包括任何服务器端事件)时,您使用的页面实例与第一次添加动态控件的页面实例不同,因为您现在正在为不同的http请求准备响应。一旦你明白了这一点,其他一切都变得更有意义了
因此,您希望向页面添加一个控件以响应按钮单击。您可以在按钮的单击事件中安全地执行此操作,该事件在页面生命周期中非常晚。但是现在用户做了一些事情来触发另一个帖子。此时,您正在使用与以前不同的page类实例。如果希望动态控件在回发完成后仍在页面上,则必须再次将其添加到页面中。如果还希望为此控件使用ViewState,则必须在Page_Load事件之前(而不是期间)执行此操作。最常见的地方是在Page_Init中
我认为这涵盖了您的大部分观点。假设您谈论的是webforms,而不是mvc,那么您可以在生命周期的任何阶段添加新的动态控件。但是,重要的是要记住,每次回发(包括任何服务器端事件)时,您使用的页面实例与第一次添加动态控件的页面实例不同,因为您现在正在为不同的http请求准备响应。一旦你明白了这一点,其他一切都变得更有意义了
因此,您希望向页面添加一个控件以响应按钮单击。您可以在按钮的单击事件中安全地执行此操作,该事件在页面生命周期中非常晚。但是现在用户做了一些事情来触发另一个帖子。此时,您正在使用与以前不同的page类实例。如果希望动态控件在回发完成后仍在页面上,则必须再次将其添加到页面中。如果还希望为此控件使用ViewState,则必须在Page_Load事件之前(而不是期间)执行此操作。最常见的地方是在Page_Init中
我想这涵盖了你的大部分观点。这些都是陈述,不是问题。你不明白什么?我没有在结尾打问号,而是写下了一些陈述,我想知道它们是否正确。我是否应该编辑它们,并尝试让它们以问号结尾?他希望这些陈述中的每一个都是真/假。如果你对这些陈述中的每一个都有具体的问题,请提问。我将这些陈述重新写成了问题。希望这有帮助……这些都是陈述,不是问题。你不明白什么?我没有在结尾打问号,而是写下了一些陈述,我想知道它们是否正确。我是否应该编辑它们,并尝试让它们以问号结尾?他希望这些陈述中的每一个都是真/假。如果你对这些陈述中的每一个都有具体的问题,请提问。我将这些陈述重新写成了问题。希望这有帮助。。。