让我以此作为开头:我为此搜索了高低,并找到了许多示例和解决方案,但我仍然无法弄清楚。
在 .aspx.cs 代码隐藏文件中,我有以下内容:
NewsArticleList listall = NewsArticleManager.GetListAll();
foreach (NewsArticle x in listall)
{
Control c1 = (NewsArticleContainer)LoadControl("~/UserControls/NewsArticleContainer.ascx");
((NewsArticleContainer)c1).PopulateWithNewsArticle(x);
mynewspanel.Controls.Add(c1);
}
我在用户控件中有一个名为 PopulateWithNewsArticle() 的方法,它接受 NewsArticle,并相应地填充用户控件的 Web 控件:
public void PopulateWithNewsArticles(NewsArticle x)
{
lbltitle.Text = x.Title;
lblcategory.Text = x.Category;
//...etc.
}
现在这有效,这很好。但是我想学习/理解的是,当我 LoadControl() 时如何将 NewsArticle x 传递给用户控件,以便在创建用户控件时,我可以在用户控件的 Page_Load 上解包 NewsArticle,并设置实例化用户控件时从右侧开始的 Web 控件属性,而不是在使用 PopulateWithNewsArticle 方法实例化之后执行它(就像我现在拥有它一样)。