我正在构建一个MVC 4内部网站点,我希望在页脚中拥有持久数据。我将保留一些每个用户独有的基本统计信息。我希望在用户访问网站期间,此数据会在所有网页上保留。
保留此数据的最佳方法是什么?一块饼干?它只是从AD中提取的一些非感性信息。我在想隐藏的领域,但这看起来有点麻烦。
感谢您的见解!
答案 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);
}