【发布时间】:2011-05-29 14:39:18
【问题描述】:
我正在构建一个产品目录,每页显示 50/100 个产品。 因为我想在我的网站上有不同的浏览部分,所以我把每个产品 进入用户控件。好吧,当然不是产品本身,而是一些标签,div 和图像。然后我在处理数据库结果时在运行时设置它的属性。所以优点是我只需要在整个站点的 1 个地方更改产品控制。我正在循环使用 LoadControl 将控件放入页面中。
但是,这些页面的加载速度不如处理相同数据库查询并使用 StringBuilder 输出相同 html 的其他页面那么快。而且由于我希望我的网站在收到一些不错的流量时表现良好,我对此感到担心。我还没有进行任何基准测试,但我清楚地看到了差异。
我的问题已经够多了!我的问题是“有没有比使用带有自定义控件的 LoadControl 更快但易于维护(或至少在 1 个位置)的替代方法?”
我在想:
- 创建自定义控件(虽然我从未做过,也不知道 100% 是否会加快速度)
- 继续使用 StringBuilder 方法并将 CreateProduct 放入我的基类中
- 放弃在 1 个位置维护产品的整个想法
我希望你们有类似的情况选择,所以我真的很想听听你们的意见!
[编辑]代码[/编辑] 我这里没有确切的用户控制代码,但我回家后会编辑这篇文章..但这里是简化的想法:
1) 获取我的数据库结果(使用 Subsonic 2.2 作为我的 DAL)
DAL.ProductCollection coll = new DAL.ProductCollection();
if(coll.count > 0)
{
foreach(DAL.Product item in coll)
{
Control p = LoadControl("FeaturedProduct.ascx");
placeholder.Controls.Add(p);
//Set properties
p.title = item.Title;
p.img = GetImage(item.Guid);
....etc
}
}
我的用户控件本身只包含 3 个文字控件和 1 个图像控件。
但是当我回到家时我会发布完整的代码! 谢谢
【问题讨论】:
-
你能发布一些你的 html 输出吗?和你的产品
UserControl?当你打电话给LoadControl()?
标签: asp.net user-controls custom-controls stringbuilder