Если ваша сущность в вашей базе данных выводит строку '05 / 06 ', эта сущность также должна иметь какой-то уникальный идентификатор, такой как целое число первичного ключа. Не могли бы вы включить это как часть URL, так что ваш приведенный выше пример становится:
www.mysite.com/yearperiod/123/05-06/detail
Затем вы можете преобразовать ваши слэши в тире в содержимое вашего сердца, не беспокоясь о том, чтобы преобразовать их обратно, потому что фактический поиск в базе данных выполняется по номеру идентификатора (часть «123»), а не по дате.
Если вы посмотрите на URL StackOverflow, они делают что-то похожее:
stackoverflow.com/questions/3648634/dealing-with-es-in-links
3648634 - это идентификатор базы данных для этого вопроса, который используется для поиска, часть " Работа с ссылками " предназначена только для удобных описательных URL-адресов и поиска. Оптимизация двигателя.
Вот метод ToFriendlyUrl (), который может генерировать эти приятные на вид, в стиле SO, URL-адреса без необходимости прибегать к кодировке URL-адресов, которая может сделать URL-адреса ужасными:
public static class UrlEncoder
{
public static string ToFriendlyUrl (this UrlHelper helper,
string urlToEncode)
{
urlToEncode = (urlToEncode ?? "").Trim().ToLower();
StringBuilder url = new StringBuilder();
foreach (char ch in urlToEncode)
{
switch (ch)
{
case ' ':
url.Append('-');
break;
case '&':
url.Append("and");
break;
case '\'':
break;
default:
if ((ch >= '0' && ch <= '9') ||
(ch >= 'a' && ch <= 'z'))
{
url.Append(ch);
}
else
{
url.Append('-');
}
break;
}
}
return url.ToString();
}
}
Вы можете настроить код для работы с другими специальными символами, такими как & ampersands &, но вы должны понять общую идею. Вы можете использовать, по вашему мнению, так:
<%= Url.ToFriendlyUrl(item.Title) %>
Итак, в двух словах, не полагайтесь на UrlEncoding, а используйте утилиту FriendlyUrl, подобную приведенной выше, и включите идентификатор базы данных для фактического поиска в базе данных.
Я написал сообщение в блоге на эту тему. http://www.dominicpettifer.co.uk/Blog/34/asp-net-mvc-and-clean-seo-friendly-urls