为MVC中的每个视图提供自定义变量(设置)

时间:2014-02-05 08:26:03

标签: c# asp.net-mvc

我想实现一个CMS,我想为视图提供一些设置。

这些设置可能是网站的名称,公司名称以及一些更复杂的项目。

我希望这些在每个视图中都可用,而不使用强类型模型,比如ViewData-ViewBag,但不必在每个动作中都设置它。

我认为我必须创建一个ControllerFactory,在ViewBag上设置CreateController

您认为这是解决此问题的最佳方案吗?


可能在Execute Code on Every Request

重复

1 个答案:

答案 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,而无需在每个操作中明确设置此属性。