6

我还是 MVC 的新手,所以请耐心等待 :-)

我有一个正在开发的社区网站,我想在用户登录后显示有多少用户在我的所有页面上在线。

我有一个共享视图,在登录后用作所有页面的布局(UserLayout.cshtml)

我可以以某种方式将显示在线计数的逻辑添加到我的共享布局中吗?

如果是 WebForms,我只会为我的母版页提供一些代码隐藏,但这显然不是这里的选项。

有关在线用户的信息是从缓存中获取的。它不能作为我的任何视图模型的属性使用。

4

4 回答 4

8

您可以编写一个呈现信息的操作(使用非常小的视图)

然后,您可以调用Html.Action以从布局页面呈现它。

于 2011-03-08T16:19:40.700 回答
1

您可以创建一个“UserLayoutModel”类并让所有其他视图模型派生自它。您还可以使用“RenderAction”来单独呈现 UI 的一部分(确保使用 ChildActionOnly 属性标记此操作)。

于 2011-03-08T16:20:01.287 回答
0

您可以创建全局操作过滤器。

通常,您将操作过滤器作为属性添加到方法或类 ( [HttpPost])。使用全局动作过滤器,您可以将代码添加到每个动作,而无需从特定类继承。就像您为每个 Action 方法添加了一个属性。

这篇文章解释了很多。

于 2011-03-08T21:22:26.800 回答
0

我所做的是创建一个所有控制器都继承自的 BaseController.cs,并且在基本控制器中,您可以覆盖 OnActionExecuting,并且您在此处设置的任何 viewdata 值都将可用于您的母版页。

protected override void OnActionExecuting(ActionExecutingContext filterContext) {
    base.OnActionExecuting(filterContext);
}
于 2011-03-08T16:21:01.120 回答