asp.net-mvc – ASP.NET MVC中的ActionFilter或RenderAction?

我正在使用几种动作方法的ASP.NET MVC控制器,所有这些都需要相同的数据.此数据需要只能使用路由值进行查找(因此,我无法在构造函数中执行查找).我确信这已经详细讨论过,但我还没有找到令人满意的建议.

获取此数据的最佳方法是什么,而不是在每个操作方法中重复自己?我正在努力:

>创建一个动作过滤器,这似乎是最好的选择,但是我在哪里存储对象,在动作参数中?是否适合在动作过滤器中创建ViewModel对象并将其直接传递给动作方法,以便它们填写ViewModel对象的其余部分?
>创建一个子动作(Html.RenderAction)来呈现此数据,但这需要第二组查找,因为子动作需要另一个实例化控制器的完整周期.
>在每个操作方法中调用的辅助方法/属性.

关于最佳方法的想法或意见在这里?

最佳答案 过滤器可能是您最好的选择,您可以将对象存储在ViewData中.

另一个选项(不是更好的选项)是创建自己的控制器基类,它覆盖ExecuteCore方法并在那里进行查找.

我这样做是为了记录,因为我想记录每个页面视图,我不想为我制作的每个控制器添加一个过滤器.在mvc 3中,将有一种方法来声明全局过滤器,它也可以解决这个问题.

点赞