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;
        }
    }
}

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

public class GlobalSettingsController : MyController
{

但是当我运行该页面时,我得到一个空引用异常,因为 RouteData 为空。
怎么是空的?我能做什么?

4

1 回答 1

11

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

一个更好的地方是在 OnActionExecuting 中,如下所示:

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
      base.OnActionExecuting(filterContext);
      var controller = default(object);
      if (RouteData.Values.TryGetValue("controller", out controller))
      {
         ViewBag.Title = controller;
      }
   }
于 2013-10-23T08:24:58.333 回答