ASP.NET MVC / C # - строка с действительными символами URL? - PullRequest
1 голос
/ 19 декабря 2011

Я не знаю, как спросить это, и я не знаю, как это называется, поэтому я просто опишу, чего я хочу достичь.

В базе данных в некоторых заголовках некоторых статей есть пробелы:

my title with spaces

Но в URL пробелы заменяются другими символами, такими как знак плюс (+) или подчеркивание (_)

http://www.mydomain.com/mycontroller/myaction/my_title_with_spaces

или

http://www.mydomain.com/mycontroller/myaction/my+title+with+spaces

Теперь, как вы это делаете в C #? Или есть какой-нибудь помощник в ASP.NET MVC, который может сделать что-то подобное?

Допустим, мы достигли указанного URL, есть ли риск, что два уникальных заголовка станут одинаковыми в URL? Пожалуйста, рассмотрите эти названия:

Title's
Titles

после разбора они стали одинаковыми

Название Титулы

Это будет проблемой при извлечении статьи из базы данных, так как я получу два результата, один для «Заголовка» и один для «Заголовка».

1 Ответ

1 голос
/ 19 декабря 2011

Я бы реализовал эту функциональность следующим образом:

1.При создании новой статьи создайте представление URL на основе заголовка.

Используйте функцию, которая преобразует заголовок для подходящего представления.Например, заголовок «Это пример» может генерировать что-то вроде «This_is_an_example».

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

2.Убедитесь, что URL-представление уникально

Если это будет идентификатор, он должен быть уникальным.Таким образом, при создании новых статей вы должны запросить в вашей базе данных итоговое представление URL.Если вы получаете результат из базы данных, это означает, что вновь созданная статья сгенерировала то же представление, что и одна из уже созданных статей.Добавьте что-нибудь к нему, чтобы оно оставалось уникальным.

Это может быть что-то вроде «This_is_an_example_2».В этом случае мы добавили «_2» в конец сгенерированного представления, чтобы оно отличалось от уже существующего.Еще раз, при каждом изменении вы должны убедиться, что это представление остается уникальным.

3.Сохраните созданный идентификатор в базе данных вместе с данными товара

В базе данных обязательно сохраните идентификатор «This_is_an_example» и свяжите его со статьей.Может быть даже в качестве таблицы первичного ключа?

4.Запросите базу данных для правильной статьи

Теперь о показе посетителю сайта правильной статьи: Когда посетитель запрашивает следующий ресурс, например:

http://www.mydomain.com/mycontroller/myaction/this_is_an_example_2

ИзвлечьЧасть URL, которая идентифицирует статью, в данном случае «this_is_an_example_2».

Когда у вас есть это, у вас есть идентификатор статьи в базе данных.Таким образом, вы можете запросить базу данных для статьи с идентификатором «this_is_an_example_2» и показать содержимое статьи пользователю.

Это может потребовать некоторой перезаписи URL.К сожалению, я не могу помочь вам с этим в asp.NET.Некоторые поиски по теме наверняка вам помогут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...