元気?MvcSiteMapプロバイダを作成するのが難しいカスタムSEO URLを使用する
MvcSiteMapプロバイダのBreadcrumbで正しく動作するSEOに優しいURLルートを設定しようとすると、いくつかの問題が発生します。 明らかにシンプルに見えますが、私はSEO関連のものとこのコンポーネントと一緒にASP.NET MVCの経験が不足しているため失われています。
勉強のため、私はMVC SiteMap Providerパッケージを追加した簡単なMVC WebSiteを作成しました。私が達成しようとしているものを
Here's:URL http://localhost:1234/product/the-product-name/1234を考えると
、私はこのようになりますパンくずリスト表示したい:
ホーム>>製品情報>>製品名
URLにするためには、この方法を生成することが、私は次のルートを作成しました:私は、次のノードSTRUを作成し、Mvc.sitemapファイルで
routes.MapRoute(
name: "SEO_Product",
url: "product/{id}/{title}",
defaults: new { controller = "Product", action = "Details" }
);
をcture:私は上記のSEO_Productルートをコメントアウトするとき
[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);
}
ブレッドクラムが正常にレンダリング:
<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、要求を受けたアクションメソッドは次のようです。ただし、このページに到達するために生成されたリンクは、このようなURLです:
http://localhost:50888/Product/Details/1?title=the-product-name(望ましくない)
と私は前述のルートのコメントを解除してアプリを実行すると、ブレッドクラムは、単純にレンダリングされません!
@Html.ActionLink(product.Title, "Details", new { title = product.UrlFriendlyTitle, id = product.Id },null)
私もマールテンBalliauwのにある指示に従ってくださいする試みでMvc.sitemapへの調整とともにDynamicNodeProviderの実装を作成しようとしました:
は、私はこのように、このページへのリンクを実装しましたSiteMapProvider GitHub、しかし私はさらに失われ、私の心を吹き飛ばしている黄色の死のスクリーンをたくさん受け取りました。それがこの問題のためのそのような特徴を作り出すのであれば、私は本当に分かりません。あなたは私がどの方向に向かうべきかを私が見せてくれることを願っています。本当にありがとうございます。
クリスティアーノ・M・ディアス