如果我想覆盖我的Controller初始化,我是否必须调用Base Initialize?

时间:2015-05-20 03:07:15

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

我有一个类变量,我想在Controller的方法调用之前设置它。它会设置当前用户。

我已经读过我不应该在构造函数上执行此操作,而是覆盖该特定控制器的Initialize方法。

我不熟悉原始的Initialize方法的功能,所以我应该在新方法结束之前通过执行base.Initialize()来调用它吗?

在构造函数或Initialize()方法上执行此操作会更好吗?

2 个答案:

答案 0 :(得分:1)

是的,你必须这样做。明确指出in the docs

  

如果重写此方法,请调用基本控件的Initialize方法。

而且,如果您没有控制控制器的实例化,我会避免依赖构造函数。

答案 1 :(得分:0)

根据MSDN

  

此方法无法直接调用。按顺序重写此方法   在任何ActionResult方法之前提供额外的处理任务   被调用,例如设置线程文化或分配自定义   TempData对象的提供者。如果重写此方法,请调用   基本控件的Initialize方法。

这意味着只需覆盖Initialize方法即可。初始化控制器时,将自动调用此命令。

您可能无法访问构造函数中的某些控制器属性,因为它们尚未初始化(例如,Request属性)。因此,在Initialize中执行任务是安全的。