Создайте нужный URL - Должен ли я цикл? - PullRequest
0 голосов
/ 27 августа 2009

Я смотрю на написание платформы электронной коммерции только для практики и небольшого проекта. Я нахожусь на этапе, когда я хочу начать писать URL-адреса и URL-адреса SEO-оптимизации.

Моя проблема в том, что я написал в системе неограниченное количество категорий / подкатегорий, и навигация вызывает у меня некоторые проблемы.

мой идеальный URL будет:

http://mydomain.com/products/first-category/second-category/productname.aspx

и для достижения этой цели я думаю вернуться к базе данных, где находится парентид =. но я чувствую, что это не будет лучшей практикой, и делать это для каждой категории, подкатегории и продукта для каждой страницы кажется неправильным.

Может кто-нибудь помочь, как этого добиться?

У меня есть знания по использованию www.urlrewriting.net и написанию веб-сайта на asp.net 3.5, но это технический ответ за цикл получения имен и т. Д. Мне нужна помощь.

Если вам потребуется дополнительная информация, я с удовольствием отвечу на любые вопросы и надеюсь, что кто-то может помочь мне в этом.

Спасибо

1 Ответ

0 голосов
/ 28 августа 2009

Просто кэшируйте всю таблицу категорий в память, если вы беспокоитесь о возвращении в базу данных.

struct Category
{
  UInt32 CategoryId {get;set;}
  UInt32 ParentId {get;set;}
  string Name {get; set;}
  string Url {get; set;}
}

SELECT CategoryId, ParentId, Name, Url FROM Categories Order By CategoryId;

MyCategories = new Dictionary<UInt32, Category>();

while (rdr.Read)
{
  MyCategories.Add((UInt32)rdr["category_id"], new Category(........));
}

Теперь получение полного пути просто зацикливается в памяти

string path = "";
currentCategory = MyCategories[category_id];

while (currentCategory != nil)
{
  // StringBuilder here 
  path += "/" + currentCategory.Name;
  currentCategory = MyCategories[Category.ParentId];
}
...