2014-01-22 50 views
1

我正在尋找一種方法來在使用標準<asp:SiteMapPath>實現導航備份堆棧時保留查詢字符串參數。在父麪包屑(SiteMapPath)中保留查詢字符串參數

爲簡單起見,假設我有一個Animal > Breed頁面堆棧:

<siteMapNode url="~/Animal.aspx" title="Animal" > 
    <siteMapNode url="~/Breed.aspx" title="Breed"/> 
</siteMapNode> 

我瀏覽到Animal.aspx?type=Dog,並選擇一個品種的狗導航到Breed.aspx?type=Bulldog

Breed.aspx我有正確的麪包屑Animal > BreedAnimal url只是Animal.aspx。我怎樣才能讓動物鏈接成爲父母/前一頁Animal.aspx?type=Dog

在這個簡單的例子中,我意識到我可以將所有的動物類型作爲單獨的節點與它們的相關類型可行地相加。我的實際設置比較複雜,需要從數據庫中讀取ID。

回答

0

正如accepted answer here我已經(Breed.aspx中的例子)

 protected void Page_Load(object sender, EventArgs e){ 
      if (!IsPostBack) 
       SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); 
    } 

    SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e){ 
      SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true); 

      currentNode.ParentNode.Url += "?type=" + this.Breed.AnimalType; 

      return currentNode; 
     } 

編輯

增加了後續的詳細頁面 似乎很好用

網址已更新,但是我使用CurrentNode在我的菜單中控制着上下網站地圖。當我克隆時,我失去了破壞菜單的兄弟信息。

我要麼需要找到克隆的一種方式它保留了整個地圖或找到修改ParentNode.Url

0

您可以將這些參數的任何鏈接的用戶是點擊瀏覽...

所以,你會使用類似

mytype = Request.QueryString["type"]; 

來獲取值時,它應用到了鏈接...

mylink.NavigateURL = "animal.aspx?type="+mytype; 

我做這個編輯器之外,所以你需要注意的語法錯誤...

這裏的一些文件...

http://msdn.microsoft.com/en-us/library/ms524784(v=vs.90).aspx

+0

我希望的東西少了很多手工的另一種方式,我不得不這樣做明確的每個頁面都需要它。我的麪包屑也位於母版頁中,因此很難從頁面級進入。 – mizzle

相關問題