URL-маршрутизация будет обрабатывать это из коробки без дополнительной реальной работы.
Просто создайте контроллер Books или BookReviews.Создайте метод действия, который принимает Id
. У вас будут основные постоянные ссылки, такие как / Books / Details / 1 и / BookReviews / Details / 4
Если вы довольны такими постоянными ссылками, то выхорошо пойти.:)
Однако , если вы хотите продвинуться дальше и сделать его еще более дружественным для поисковых систем с немного большим количеством работы ......
СначалаВы должны создать или найти простой кодировщик «слаг», который будет принимать строку (возможно, название книги или рецензента) и кодировать любые не алфавитно-цифровые символы в - или аналогичные. Алгоритм URL Slugify в C #?
Теперь мы можем создать маршрут, подобный
Книги / {title} - {id}
routes.MapRoute(
"BooksSeoRoute",
"Books/{slug}-{id}",
new { controller = "Books", action = "Details" } // Parameter defaults
);
Итакмы получаем постоянные ссылки, которые выглядят следующим образом: Книги / The-Title-Of-Book-38
Для рецензирования книг вам может понадобиться «вложенный» подход, чтобы вы могли использовать
routes.MapRoute(
"BookReviewsSeoRoute",
"Books/{book-slug}/{slug}-{id}",
new { controller = "BookReviews", action = "Details" } // Parameter defaults
);
Книги / The-Of-The-The-Book-38 / Review-by-John-Smith-24
Вы можете добавить поле слагов в свои модели / entites / database,или вы можете просто добавить геттер, который будет динамически генерировать его из вашего названия / автора
т.е.
public class Book {
public string Id {get;set;}
public string Title {get;set;}
public string Slug
get
{
return SlugEncoder.EncodeString(this.Title);
}
}
В ваших взглядах
=Html.ActionLink("Permalink","Details","Book",new{@Id=Model.Id, @Slug=Model.Slug})