坚持数据

时间:2015-03-25 13:19:29

标签: asp.net asp.net-mvc c#-4.0 visual-studio-2012

我正在构建一个MVC 4内部网站点,我希望在页脚中拥有持久数据。我将保留一些每个用户独有的基本统计信息。我希望在用户访问网站期间,此数据会在所有网页上保留。

保留此数据的最佳方法是什么?一块饼干?它只是从AD中提取的一些非感性信息。我在想隐藏的领域,但这看起来有点麻烦。

感谢您的见解!

1 个答案:

答案 0 :(得分:1)

虽然您可以使用会话执行此任务,但我会提醒您。应尽可能避免会话。

您可以使用子操作来构建页脚,使用AD获取相关详细信息,然后在布局中呈现此内容。如果您担心每次请求渲染页脚都会遇到AD,那么只需缓存结果。

public class FooController : Controller
{
    ...

    [ChildActionOnly]
    public ActionResult Footer()
    {
        // query AD and stuff the info in a view model
        return PartialView("_Footer", model);
    }
}

然后,在你的布局中:

@Html.Action("Footer", "Foo")

当然,您需要根据此示例将当前的页脚视图代码移动到名为_Footer.cshtml的部分视图中。

要缓存,只需在子操作前加上:

[OutputCache(Duration = 3600, VaryByCustom = "User")]

Duration是几秒钟,所以上面会缓存一个小时。您需要在Global.asax中添加以下方法:

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if (custom == "User")
    {
        if (context.Request.IsAuthenticated)
        {
            return context.User.Identity.Name;
        }
        return null;
    }

    return base.GetVaryByCustomString(context, custom);
}