我想实现一个CMS,我想为视图提供一些设置。
这些设置可能是网站的名称,公司名称以及一些更复杂的项目。
我希望这些在每个视图中都可用,而不使用强类型模型,比如ViewData-ViewBag,但不必在每个动作中都设置它。
我认为我必须创建一个ControllerFactory
,在ViewBag
上设置CreateController
。
您认为这是解决此问题的最佳方案吗?
答案 0 :(得分:2)
创建您自己的应用程序控制器并覆盖OnActionExecuting
。在那里,您可以在Viewbag中初始化自己的属性:
public abstract class ApplicationController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// set your ViewBag.Settings here
}
}
创建从ApplicationController派生的所有控制器类:
public class HomeController : ApplicationController { ... }
现在,您可以从所有视图中访问ViewBag.Settings
,而无需在每个操作中明确设置此属性。