Наряду с Manas 'ответом вы можете иметь дополнительное «поле / столбец / свойство» в своей коллекции для хранения понятного для URL имени.
Не все имена будут действительными именами URL (например, если для вашей коллекции «50% скидка !!», вы непременно получите неожиданные результаты по URL http://server/Collections/50% Off !!)
Так что вы можете попробовать добавить «UrlFriendlyName» в свою коллекцию и автоматически сгенерировать его из официального названия:
public class Url
{
public static string GetUrlFriendlyName(string name)
{
//Unwanted: {UPPERCASE} ; / ? : @ & = + $ , . ! ~ * ' ( )
name = name.ToLower();
//Strip any unwanted characters
name = Regex.Replace(name, @"[^a-z0-9_\s-]", "");
//Clean multiple dashes or whitespaces
name = Regex.Replace(name, @"[\s-]+", " ");
//Convert whitespaces and underscore to dash
name = Regex.Replace(name, @"[\s_]", "-");
name = Regex.Replace(name, @"-+", "-");
return name;
}
}
Таким образом, вы можете запросить вашу коллекцию на основе понятного URL-адреса (в идеале, оно будет уникальным, но в игру вступит множество других проблем ... например, добавление идентификатора к URL-адресу (* 1013). * или добавление случайных чисел к понятному URL-имени, например http://server/Collections/Summer-123, или просто указание пользователю, создающему коллекцию, указать уникальное понятное URL-имя, начиная с автоматически сгенерированного, но возвращая его пользователю, если оно не уникально).