我应该在哪里编辑BaseModelView(在BaseController中)?

时间:2011-02-23 12:45:33

标签: c# asp.net-mvc-2

我创建了一个Base-Controller,所有控制器都从该控制器继承。目前这个控制器将一些数据(我在大多数视图中使用)填充到ViewData - 容器中,如下所示:

    protected override void Initialize(System.Web.Routing.RequestContext rc)
    {
        base.Initialize(rc);
        ViewData["cms_configuration"] = new CmsConfiguration();
        // etc.
    }

我不喜欢我需要在视图中从ViewData读取(和转换)这一事实。我想介绍一个BaseViewModel,所有ViewModel都将从该BaseViewModel继承,定义属性而不是使用ViewData。但是我如何或在哪里填充BaseController中的BaseViewModel?有某种钩子吗?或者我只需要在BaseController中定义一个函数,我在Child-Controller中调用它?

E.g。 (儿童控制器:

//{...}
base.PopulateBaseView(MyView);
return View(MyView);

任何tipps的Thx。 sl3dg3

1 个答案:

答案 0 :(得分:1)

您可以选择使用ActionFilters来执行以下操作:

查看这篇文章:

http://www.asp.net/mvc/tutorials/understanding-action-filters-cs

很好地解释了ActionFilters。这样,您可以将不同的填充逻辑分成不同的过滤器,并根据需要打开和关闭它们。