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