MVC为什么RouteData为null?

Ser*_*rge 4 c# asp.net-mvc asp.net-mvc-5

我正在尝试更改所有控制器的默认ViewBag.Title,所以我想创建一个继承自Controller的基类并在那里处理标题:

public class MyController : Controller
{
    public MyController()
        : base()
    {
        var controller = default(object);

        if (RouteData.Values.TryGetValue("controller", out controller))
        {
            ViewBag.Title = controller;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从我的控制器继承该类:

public class GlobalSettingsController : MyController
{
Run Code Online (Sandbox Code Playgroud)

但是当我运行页面时,我得到一个空引用异常,因为RouteData为null.
它是怎么回事?我该怎么办?

Nic*_*sen 10

在将任何值分配给控制器之前,您正在构造函数内执行代码.

更好的地方是OnActionExecuting这样:

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
      base.OnActionExecuting(filterContext);
      var controller = default(object);
      if (RouteData.Values.TryGetValue("controller", out controller))
      {
         ViewBag.Title = controller;
      }
   }
Run Code Online (Sandbox Code Playgroud)