在布局视图上填充ViewBag

时间:2011-12-15 01:46:15

标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor

将ASP.Net MVC3与C#一起使用

我的布局页面上有旋转广告设置。 它由包含随机广告的ViewBag填充。 唯一的问题是我需要在每个控制器和操作中包含数据库视图包代码,以使其在每个页面上都能正常工作。

无论我使用哪种控制器或操作,都有办法填充ViewBag吗?

3 个答案:

答案 0 :(得分:7)

我认为你可以创建一个BaseController,你的所有控制器都可以继承它,为你处理这个。然后,您可以覆盖BaseController的OnActionExecuting事件,并将广告加载到ViewBag中。

答案 1 :(得分:1)

一种方法是为所有控制器创建一个(abstract?)基类,并根据需要注入ViewBag(例如,通过覆盖ControllerBase.Execute)。< / p>

另一种方式是create a global action filter做同样的事情。

答案 2 :(得分:0)

ViewBag是控制器基类的成员,因此您可以在任何方法中引用它。因此,您可以设置一个填充它的公共函数,然后从实际的操作方法中调用它:

private void PopulateViewBag() {
    ViewBag.SomeThing = SomeOtherThing();
}

控制器上的方法不 是行动,它毕竟只是一个类。