Не совсем понятно, что вы ищете. Вы упоминаете Guid, но вы не включили его в сгенерированный URL. Я работаю в предположении, что вам нужно пройти Guid вместе с SEO-дружественным названием Что вы можете сделать, это создать Dictionary<string, string>
и передать его атрибуту asp-all-route-values
помощника тега привязки.
Ваша страница блога имеет этот шаблон: @page "{title}/{id}"
Ваша модель содержит свойство List<BlogTitle>
(Links
), где класс BlogTitle
выглядит следующим образом (как минимум):
public class BlogLink
{
public string Title { get; set; }
public Guid Id { get; set; } = Guid.NewGuid();
}
На странице содержимого вы должны сделать следующее:
@foreach(var link in Model.Links)
{
var routeValues = new Dictionary<string, string>
{
{ "title", SeoFriendly(link.Title) },
{ "id", link.Id.ToString() }
};
<a asp-page="blog" asp-all-route-data="routeValues">@link.Title</a><br />
}
Метод SeoFriendly используется для преобразования «My First Blog Title» и т. Д. В его SEO-дружественную версию. Это может быть даже определено в разделе @functions
на странице:
@functions{
public static string SeoFriendly(string s)
{
return s.Replace(" ", "-").ToLower(); // you need something more robust than this
}
}
См. Примечание 1 здесь: https://www.learnrazorpages.com/razor-pages/tag-helpers/anchor-tag-helper
Примечание: если вы хотите, чтобы код генерирования словаря отсутствовал на странице содержимого, добавьте свойство Dictionary<string, string>
в свой класс BlogTitle
и сгенерируйте значения в PageModel.