2014-04-01 48 views
0

添加一個子節點我有一個人創建這是從兩個不同的網頁稱爲網頁。我想根據我從中調用的頁面顯示此Create頁面的父節點。我怎樣才能改變基於網頁從我叫父麪包屑或我如何能在MvcSiteMapNode

<mvcSiteMapNode title="Create" controller="Person" action="Create" /> 

I want the above node to be inside the below parent node based from where it is called from. 

<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople" > 
</mvcSiteMapNode> 

<mvcSiteMapNode title="People" controller="Person" action="Index" >   

</mvcSiteMapNode> 

在此先感謝

回答

0

要做到這一點,你需要2個獨立的節點,並確保每個人都有一個唯一的URL。 MvcSiteMapProvider要求每個節點都有唯一的路由簽名才能運行。每個節點將被放置爲相應類別的子節點。

您可以通過添加一個值的查詢字符串或改變你的路線,所以你必須在每種情況下,一個完全不同的URL進行唯一的URL。在每種情況下您都擁有唯一的URL並配置了路由信息以在節點中創建每個URL後,麪包屑將按預期工作。

<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople"> 
    <mvcSiteMapNode title="Create" controller="Person" action="Create" category="AllPeople" /> 
</mvcSiteMapNode> 

<mvcSiteMapNode title="People" controller="Person" action="Index">   
    <mvcSiteMapNode title="Create" controller="Person" action="Create" /> 
</mvcSiteMapNode> 

結果:

All People > Create (URL is /Person/Create?category=AllPeople) 
People > Create (URL is /Person/Create) 

但是,你需要做的,如果你的重複頁面是面向Internet一兩件事 - 增加一個規範的標籤。這將告訴搜索引擎你打算在2個不同的URL上放置相同的內容。您可以決定要在索引中顯示哪個特定的URL,然後將canonicalUrl與該URL或canonicalKey與該節點的鍵一起添加到「重複」節點。

<mvcSiteMapNode title="All People" controller="Person" action="AllPeople" key="AllPeople"> 
    <mvcSiteMapNode title="Create" controller="Person" action="Create" category="AllPeople" canonicalKey="CreatePerson" /> 
</mvcSiteMapNode> 

<mvcSiteMapNode title="People" controller="Person" action="Index">   
    <mvcSiteMapNode title="Create" controller="Person" action="Create" key="CreatePerson" /> 
</mvcSiteMapNode> 

然後添加一個@Html.MvcSiteMap().CanonicalTag() HTML幫助到<head></head>部分(通常在佈局頁),並在必要時MvcSiteMapProvider將自動生成規範的標籤。

<head> 
    <meta charset="utf-8" /> 
    <title>@Html.MvcSiteMap().SiteMapTitle() - My ASP.NET MVC Application</title> 
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> 
    <meta name="viewport" content="width=device-width" /> 
    @Html.MvcSiteMap().CanonicalTag() 
    @Html.MvcSiteMap().MetaRobotsTag() 
    @Styles.Render("~/Content/css") 
    @Scripts.Render("~/bundles/modernizr") 
</head> 

的更多信息:

http://www.shiningtreasures.com/post/2013/08/10/mvcsitemapprovider-4-seo-features#canonical-tag https://github.com/maartenba/MvcSiteMapProvider/wiki/Multiple-Navigation-Paths-to-a-Single-Page http://www.mattcutts.com/blog/canonical-link-tag/

一定要檢查出的第一篇文章的代碼下載一個工作演示。