Как вы поживаете?Сложности при создании MvcSiteMap Provider работают с настраиваемым дружественным поисковым URL-адресом
У меня возникли трудности с настройкой URL-адреса URL-адреса, который правильно работает с Breadcrumb провайдера MvcSiteMap. Похоже, что это просто, но я теряюсь из-за отсутствия опыта работы с ASP.NET MVC вместе с продуктами, связанными с SEO, и с этим компонентом.
Для целей обучения я создал простой веб-сайт MVC, в котором я добавил пакет MVC SiteMap Provider.
Here's, что я пытаюсь достичь:
Учитывая URL http://localhost:1234/product/the-product-name/1234, я хочу, чтобы отобразить панель навигации, которая выглядит следующим образом:
Главная >> Продукты >> Имя продукта
для того, чтобы в URL быть произведен таким образом, я создал следующий маршрут:
routes.MapRoute(
name: "SEO_Product",
url: "product/{id}/{title}",
defaults: new { controller = "Product", action = "Details" }
);
В Mvc.sitemap файле, я создал следующий узел STRU cture:
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode title="Products" controller="Product" action="Index">
<mvcSiteMapNode title="Details" controller="Product" action="Details" preservedRouteParameters="id" />
</mvcSiteMapNode>
</mvcSiteMapNode>
Кроме того, имя контроллера является ProductController и метод действия, который получает запрос состоит в следующем:
[SiteMapTitle("Title")]
public ActionResult Details(int id)
{
var productSearchResult = productRepository.List(pr => pr.Id == id);
var product = default(Product);
if (productSearchResult.Item != null)
product = productSearchResult.Item.FirstOrDefault();
else
RedirectToAction("Index");
return View(product);
}
На панели навигации делает успешно, когда я закомментируйте маршрут SEO_Product выше. Тем не менее, связь генерироваться для достижения этой страницы является URL, как это:
http://localhost:50888/Product/Details/1?title=the-product-name (НЕ ХОЧЕТ)
и когда я раскомментировать маршрут выше и запустить приложение, то крошка просто не делает!
Я реализовал ссылку на эту страницу так:
@Html.ActionLink(product.Title, "Details", new { title = product.UrlFriendlyTitle, id = product.Id },null)
Я также пытался создать реализацию DynamicNodeProvider вместе с корректировками в Mvc.sitemap в попытке следовать инструкциям, расположенные на Маартен Balliauw-х SiteMapProvider GitHub, но я потерял еще больше и получил много желтых экранов смерти, которые дуют мне в голову. И я не уверен, что это случай создания такой функции для этого.
Надеюсь, вы, ребята, можете показать мне, в каком направлении мне следует идти, и я действительно ценю вашу помощь.
Cristiano M Dias