2013-03-09 52 views
0

在節點中,標題應該是登錄到系統的用戶的名稱。如何動態更改只有一個節點的標題

此外,我想結果被緩存,因爲要獲得用戶名我必須去到數據庫,因爲用戶名是電子郵件。

如何使用登錄用戶的名稱修改標題並緩存結果,但是如果其他用戶登錄,則不會加載緩存頁面,但會向他呈現新頁面。

回答

0

在第4版中,您可以簡單地在視圖或控制器中設置標題,並且該請求將被緩存給該用戶(其他用戶不會看到它)。

@MvcSiteMapProvider.SiteMaps.Current.CurrentNode.Title = "My Username" 

當然,我使用CurrentNode作爲示例,您可以通過走樹來做到這一點。

但是,您需要處理緩存的用戶名以防止MvcSiteMapProvider之外的每個請求的數據庫命中。您可以通過爲每個用戶創建一個緩存項目,將用戶名(只要它是唯一的)合併到密鑰中來完成此操作。

var key = "My Username"; 
var userName = HttpContext.Current.Cache.Item[key]; 
if (userName == null) 
{ 
    userName = GetUserNameFromDB(); 
    HttpContext.Current.Cache.Item[key] = userName; 
}