我正在构建一个监视其他系统的应用程序。现在我想实现局部视图,一个名为“status”的用户控件。该控件应显示有关应用程序的状态信息。类似:
用户已登录,
在线有多少个系统,
最新活动。
该局部视图应在几乎所有其他视图中呈现。我该如何将这些信息传递给视图?
我不想写
Wiewdata[“SystemsOnline”] = Helpers.CountSystemsOnline()
Wiewdata[“SystemLatestActivity”] = ………………
在我的所有行动中。
我可以写一些像Html.RenderPartial(../ Shared / Status)这样的东西,它会添加到添加viewdata的动作吗?
或者我应该通过hepler直接在视图中访问信息吗?
我注意到defult LogOnUserControl视图使用Page.User.Identity.Name直接访问该数据。
何时可以通过控制器中的viewdata传递数据?
答案 0 :(得分:2)
为此,您必须使用ViewData
类。我不建议发明技巧。
但您不需要手动从每个操作传递相同的数据。只需在您的基本控制器中执行此操作:
protected override void OnActionExecuted(ActionExecutedContext context) {
base.OnActionExecuted(context);
if (context.Result is ViewResult) {
// Pass the systems online to all views
ViewData[“SystemsOnline”] = Helpers.CountSystemsOnline();
}
}
只有几行代码才能让它随处可用。