C# 为什么将init代码放在OnActionExecuted中而不是控制器的构造函数中?

C# 为什么将init代码放在OnActionExecuted中而不是控制器的构造函数中?,c#,asp.net-mvc-3,controller,C#,Asp.net Mvc 3,Controller,在我的MVC3 C#项目中,我一直在寻找用控制器代码构建导航菜单并将其传递到母版页的方法。(我想初始化控制器中的菜单,以便进行一些授权和角色检查等…) 到目前为止,我在这里找到了几个答案,它们似乎都需要重写BaseController的OnActionExecuted方法(所有其他控制器都从该方法扩展) 例1(见接受答案): 例2: 但是wy不只是将相同的代码放在基本控制器的构造函数中?如果您的所有控制器都继承自同一个基本控制器,那么没有理由不这样做 ActionFilterAttribute的

在我的MVC3 C#项目中,我一直在寻找用控制器代码构建导航菜单并将其传递到母版页的方法。(我想初始化控制器中的菜单,以便进行一些授权和角色检查等…)

到目前为止,我在这里找到了几个答案,它们似乎都需要重写BaseController的OnActionExecuted方法(所有其他控制器都从该方法扩展)

例1(见接受答案):

例2:


但是wy不只是将相同的代码放在基本控制器的构造函数中?

如果您的所有控制器都继承自同一个基本控制器,那么没有理由不这样做


ActionFilterAttribute
的优点是,它允许您通过简单地用属性修饰在任何控制器上插入逻辑,允许您自由地从您选择的任何基类继承。

如果您的所有控制器都从同一个基类继承,你没有理由不能这样做


ActionFilterAttribute
的优点是,它允许您通过简单地用属性修饰在任何控制器上插入逻辑,允许您自由地从您选择的任何基类继承。

谢谢,对我来说很有意义。还有一件事,它可能与框架管线有关吗。我只需要CreateController阶段中可用的RequestContext,所以在我看来这并不重要。谢谢,对我来说很有意义。还有一件事,它可能与框架管线有关吗。我只需要CreateController阶段中可用的RequestContext,所以在我的情况下,我想这并不重要。