将ASP.Net MVC3与C#一起使用
我的布局页面上有旋转广告设置。 它由包含随机广告的ViewBag填充。 唯一的问题是我需要在每个控制器和操作中包含数据库视图包代码,以使其在每个页面上都能正常工作。
无论我使用哪种控制器或操作,都有办法填充ViewBag吗?
答案 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();
}
控制器上的方法不 是行动,它毕竟只是一个类。