2014-04-17 31 views
0

工作原理Asp.net站點地圖節點導航不回發

我有兩個頁面PageA.aspx和PageB.aspx,也是一個dashboard.aspx。從儀表板中,我們可以訪問PageA和PageB。從這些頁面導航回儀表板時,我們使用站點地圖節點。

PageA sitemap是'Dashboard> PageA',PageB是'Dashboard> PageB'。我點擊儀表盤,導航到dashboard.aspx

條件

在PageA.aspx我有一個單選按鈕(x和y)和一個提交按鈕。我的情況是,當我選擇y單選按鈕並單擊submit時,我應該重定向到PageB.aspx,並且PageB.aspx中的站點地圖節點應重命名爲'Dashboard> ConditionX'。但是,如果我直接從dashboard.aspx導航到PageB.aspx,那麼站點地圖節點應該是'Dashboard> PageB'。

我至今

在PageA.aspx完成提交點擊,我檢查單選按鈕,選擇並設置一個會話Session["IsCondition"]=true,然後用Response.Redirect("~/PageB.aspx")導航到PageB.aspx。

在PageB.aspx的Page_Load()我檢查會話

if (Session["IsCondition"] != null && Convert.ToBoolean(Session["IsCondition"])) 
        { 
         //My code here if condition is satisfied 
         SiteMap.Provider.CurrentNode.ReadOnly = false; 
         SiteMap.CurrentNode.Title = "ConditionX"; 
         SiteMap.Provider.CurrentNode.ReadOnly = true; 
        } 
        else 
        { 
         //My code here if I was directly accessing from Dashboard 
         SiteMap.Provider.CurrentNode.ReadOnly = false; 
         SiteMap.CurrentNode.Title = "PageB"; 
         SiteMap.Provider.CurrentNode.ReadOnly = true; 
        } 

而且,在dashboard.aspx Page_Load()我已經設置Session["IsCondition"]=null

問題

當我使用的提交按鈕PageA.aspx重定向到PageB.aspx,那麼PageB.aspx中的條件工作是正確的,並且站點地圖顯示爲'Dashboard> ConditionX'。在此頁面中,如果我點擊站點地圖中的Dashboard節點,即使導航到Dashboard,dashboard.aspx頁面的Page_Load也不會被觸發。由於會話價值沒有得到從儀表板頁中清除,點擊PageB.aspx將加載網頁B與條件這是不是我想要的

問題

爲什麼不儀表盤被解僱? 我在做什麼錯? 儀表板頁面是否被緩存並顯示,Page_load沒有被解僱?

回答

1

Response.Cache.SetNoStore()在主頁面Page_Load()解決了問題