我还是 MVC 的新手,所以请耐心等待 :-)
我有一个正在开发的社区网站,我想在用户登录后显示有多少用户在我的所有页面上在线。
我有一个共享视图,在登录后用作所有页面的布局(UserLayout.cshtml)
我可以以某种方式将显示在线计数的逻辑添加到我的共享布局中吗?
如果是 WebForms,我只会为我的母版页提供一些代码隐藏,但这显然不是这里的选项。
有关在线用户的信息是从缓存中获取的。它不能作为我的任何视图模型的属性使用。
我还是 MVC 的新手,所以请耐心等待 :-)
我有一个正在开发的社区网站,我想在用户登录后显示有多少用户在我的所有页面上在线。
我有一个共享视图,在登录后用作所有页面的布局(UserLayout.cshtml)
我可以以某种方式将显示在线计数的逻辑添加到我的共享布局中吗?
如果是 WebForms,我只会为我的母版页提供一些代码隐藏,但这显然不是这里的选项。
有关在线用户的信息是从缓存中获取的。它不能作为我的任何视图模型的属性使用。
您可以编写一个呈现信息的操作(使用非常小的视图)
然后,您可以调用Html.Action
以从布局页面呈现它。
您可以创建一个“UserLayoutModel”类并让所有其他视图模型派生自它。您还可以使用“RenderAction”来单独呈现 UI 的一部分(确保使用 ChildActionOnly 属性标记此操作)。
您可以创建全局操作过滤器。
通常,您将操作过滤器作为属性添加到方法或类 ( [HttpPost]
)。使用全局动作过滤器,您可以将代码添加到每个动作,而无需从特定类继承。就像您为每个 Action 方法添加了一个属性。
我所做的是创建一个所有控制器都继承自的 BaseController.cs,并且在基本控制器中,您可以覆盖 OnActionExecuting,并且您在此处设置的任何 viewdata 值都将可用于您的母版页。
protected override void OnActionExecuting(ActionExecutingContext filterContext) {
base.OnActionExecuting(filterContext);
}