Я создаю каталог товаров, который отображает от 50 до 100 товаров на странице.Поскольку я хочу иметь разные разделы просмотра на своем сайте, я поместил каждый продукт в UserControl.Ну, не сами продукты, конечно, но некоторые ярлыки, div и изображения.Затем я устанавливаю его свойства во время выполнения при обработке результатов базы данных.Таким образом, преимущество в том, что мне нужно всего лишь изменить контроль продукта в 1 месте для всего сайта.Я помещаю элементы управления на страницу, используя LoadControl в цикле.
Однако страницы загружаются не так быстро, как другие страницы, которые обрабатывают тот же запрос БД и выводят тот же HTML, используя StringBuilder.И так как я хочу, чтобы мой сайт работал хорошо, если / когда он получает приличный трафик, я беспокоюсь об этом.Я еще не проводил никаких тестов, но я ясно вижу разницу.
Достаточно моих проблем!Мои вопросы к вам: «Есть ли альтернативы, которые быстрее, чем использование LoadControl с настраиваемым контролем, но которые легко поддерживаются (или, по крайней мере, в 1 месте)?»1009 * Создание настраиваемого элемента управления (хотя я никогда не делал этого и не знаю на 100%, если это ускорит процесс)
Продолжите с методом StringBuilder и поместите CreateProduct в мой базовый класс Отказ от всей идеи поддержания продукта в 1 месте
Я надеюсь, что у вас, ребята, были схожие ситуации, поэтому я очень хотел бы услышать от вас!
[править] Код [/ edit] У меня нет точного кода пользовательского контроля здесь, но я отредактирую этот пост, когда вернусь домой ... но вот упрощенная идея:
1) Получение результата моей базы данных (с использованием Subsonic2.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 элемента управления изображением.
Но я отправлю полный код, когда вернусь домой!Спасибо