你好,我想学习如何在asp.net中创建动态用户控件。
我只知道此类控件是在运行时创建或加载的。
有人知道关于这个主题的好教程吗?
提前感谢,
你好,我想学习如何在asp.net中创建动态用户控件。
我只知道此类控件是在运行时创建或加载的。
有人知道关于这个主题的好教程吗?
提前感谢,
如果你真的必须使用动态控件,则需要牢记HTTP的无状态特性以及asp.net页面生命周期。每个都增加了使动态控件工作的难点:前者需要在每次回发时创建或重新创建控件,而后者则需要在命中页面加载事件之前完成此操作-通常在页面初始化或预初始化中。
Control ControlInstance = LoadControl("MyControl.ascx");
myPlaceholder.Controls.Add(ControlInstance);
我同意@Joel的观点,通过了解页面生命周期、无状态性等,可以避免陷阱。需要注意的主要事项包括:
Page_Init - 在此处初始化页面上的控件,因为它们是上次呈现页面时的状态。这很重要,因为ViewState在Init之后运行,并且需要以与先前呈现方式相同的方式初始化相同的控件。您可以使用@Mitchel的代码加载控件,例如:
Control ControlInstance = LoadControl("MyControl.ascx"); myPlaceholder.Controls.Add(ControlInstance);
Page_Load - 在此处加载控件的内容,就像加载任何未动态加载的控件一样。如果您在page_init中保留了对它们的引用,则它们将在此处可用。
遵循这个结构,我没有遇到太多困难,因为这似乎是ASP.NET设计工作的方式,即使MSDN上的所有示例都不是这样做的。然后,您需要注意跟踪页面在控件渲染方面的状态。
在我的情况下,我需要获取多页调查的部分编号并从数据库重新加载问题,所以我所要做的就是跟踪当前呈现的部分编号,这并不困难。微软的文章很好,但我读过的最好的文章在下面的链接中:
https://web.archive.org/web/20210330142645/http://www.4guysfromrolla.com/articles/092904-1.aspx
如果你真的对ASP.NET Web Forms动态控件感兴趣,我建议你学习DotNetNuke CMS门户网站。DotNetNuke是使用动态控件作为核心功能构建动态门户和页面的最佳案例之一,使用ASP.NET门户。可以在www.dotnetnuke.com免费下载。希望这能帮到你。