Asp.net mvc 2 ASP.NET MVC 2-在特定区域的每个请求上设置ViewData(无继承)

Asp.net mvc 2 ASP.NET MVC 2-在特定区域的每个请求上设置ViewData(无继承),asp.net-mvc-2,Asp.net Mvc 2,在我的应用程序的管理区域中,每个页面上的ViewData中都必须有一个对象,以便在主模板中显示。我已经从Controller继承了,所以我无法创建一个简单的基类来处理它。当不使用继承时,有什么好的解决方案?ActionFilter看起来很有趣,但我不想把它放在管理区域的每个控制器上。我正在考虑以下几点: 还可以检测区域的自定义控制器工厂 应用程序开始请求,尽管我当时不知道如何执行控制器。 也许你有更好的解决方案?我的主页上有一个下拉列表。您不需要查看数据。我是这样做的 母版页上的代码: <

在我的应用程序的管理区域中,每个页面上的ViewData中都必须有一个对象,以便在主模板中显示。我已经从Controller继承了,所以我无法创建一个简单的基类来处理它。当不使用继承时,有什么好的解决方案?ActionFilter看起来很有趣,但我不想把它放在管理区域的每个控制器上。我正在考虑以下几点:

还可以检测区域的自定义控制器工厂 应用程序开始请求,尽管我当时不知道如何执行控制器。
也许你有更好的解决方案?

我的主页上有一个下拉列表。您不需要查看数据。我是这样做的

母版页上的代码:

<%= Html.DropDownList("schselectr", MVC2_NASTEST.MvcApplication.masterSchooljaarList())%>
在Global.asax.cs中

    public static SelectList masterSchooljaarList() {
        NASDataContext _db = new NASDataContext();
        List<Schooljaar> newlist = _db.Schooljaars.ToList();
        return new SelectList(_db.Schooljaars.ToList(), "Sch_Schooljaar", "Sch_Schooljaar");
    }

简单地说,每次加载页面时,它都会调用返回所需数据的方法。简单、干净、有效。

在本例中,我将创建一个单独的操作,执行一个显示所需数据的局部视图。在我看来,这是解决此类问题的最干净的解决方案,而且它易于测试和重用

这是什么样的数据?也许Html.RenderAction是一个更好的解决方案?它是当前登录的用户,因此它对数据库和IPrincipal都有依赖性。好的,我明白了。我可能会使用Html.RenderAction。在我看来,这是最干净的解决方案。是的,这样做似乎很简单,而不是和一个控制器工厂混在一起。如果你给出答案,我会相信你。方法我刚才评论说,数据对象是当前登录的用户,因此对数据库和IPrincipal都有依赖关系。无论如何,在这样一个测试友好的框架中创建静态上下文并不是一个好的解决方案。当然谢谢你的回答!你不能把它寄给校长吗?你不想这样做的原因是因为它违反了很多设计模式,包括mvc,而且很难测试。