我在哪里可以插入填充viewbag的方法调用,以便在每个请求中调用它?

时间:2014-04-11 19:13:01

标签: asp.net-mvc

我有一个MVC项目,并且有一个侧边栏,我在其中显示一些用户信息。 我希望有一个方法调用生成此信息并填充ViewBag,以便我可以显示它。

据我所知,我可以使用Globals.asax的Application_BeginRequest方法,但它不允许我使用ViewBag。

我可以在哪里"插上"这个方法调用所以它在每个请求中调用,我可以填充ViewBag?

编辑:如果有更好的方式填充此信息,请告诉我

2 个答案:

答案 0 :(得分:3)

您可以使用 ActionFilter

public class IncludeSidebarValuesAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var controller = filterContext.Controller as YourBaseController;

            if (controller != null)
            {
                       controller.ViewBag.YourInfo = LoadSideBarInfo();


            }
        }
    }

然后,在你的控制器中你装饰这样的动作:

[IncludeSidebarValues]
public ActionResult YourAction(){
---
}

答案 1 :(得分:0)

你可以使用_Layout.cshtml,每次都会渲染它,所以每次都会执行你的方法。