1

我只是对以编程方式在aspx. 在做了一些研究之后,我只是想确保我正确理解了这一点。

当您尝试以编程方式添加控件时,您应该在page life cycle.

  1. 您可以以编程方式创建和添加控件的最新版本是否在page_load?

  2. 在中创建控件是最佳实践吗?initialization phase是因为这是在view state加载之前吗?

  3. 您是否必须继续重新创建每个控件post back?或者有没有办法创建一次并让它持久化?

  4. 如果您更改onInit阶段中存在的任何控件,它会在加载view state时自动替换吗?view state

  5. 是否ContentTemplateContainer.Controls.Add(...)添加子控件?例如,如果您尝试添加一个充满按钮的网格视图的表格,partial post back当单击其中一个按钮时会出现吗?如果不是,您应该如何将子控件添加到UpdatePanel?

这就是我现在能想到的所有问题。你们能给我的任何澄清都会很棒!

4

1 回答 1

1

假设您谈论的是 webforms,而不是 mvc,您可以在生命周期的任何阶段添加新的动态控件。但是,重要的是要记住,每次您有一个回发(包括任何服务器端事件)时,您都在使用与您第一次添加动态控件的页面不同的页面实例,因为您现在正在准备响应对于不同的 http 请求。一旦你清楚地理解了这一点,其他一切都开始变得更有意义。

因此,您想在页面中添加一个控件以响应按钮单击。您可以在按钮的单击事件中安全地执行此操作,这在页面生命周期中非常晚。但是现在用户做了一些事情来触发另一个帖子。此时,您正在使用与以前不同的页面类实例。如果希望在回发完成后动态控件仍然在页面上,则必须再次将动态控件添加到页面中。如果您还想为此控件使用 ViewState,则必须在 Page_Load 事件之前(而不是期间)执行此操作。最常见的地方是 Page_Init。

我认为这涵盖了您的大部分观点。

于 2012-06-29T19:45:04.513 回答