【问题标题】:How to dynamically change the title of only one node如何动态更改仅一个节点的标题
【发布时间】:2013-03-09 13:16:22
【问题描述】:

在一个节点中,标题应该是登录系统的用户名。

此外,我希望缓存结果,因为要检索用户名,我必须访问数据库,因为用户名是电子邮件。

如何用登录用户的名字修改标题并缓存结果,但是如果另一个用户登录它不会加载一个缓存的页面,而是会向他呈现一个新的页面。

【问题讨论】:

    标签: sitemapprovider mvcsitemapprovider


    【解决方案1】:

    在 v4 中,您可以简单地在视图或控制器中设置标题,它将为该用户缓存请求(其他用户不会看到)。

    @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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2011-09-03
      • 2021-01-09
      相关资源
      最近更新 更多