我试图为我的所有控制器更改默认的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是空的。
为什么它是空的?我能做些什么?
发布于 2013-10-23 08:24:58
在将任何值分配给控制器之前,您正在构造函数内执行代码。
更好的方法是在OnActionExecuting中这样做:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
var controller = default(object);
if (RouteData.Values.TryGetValue("controller", out controller))
{
ViewBag.Title = controller;
}
}https://stackoverflow.com/questions/19536385
复制相似问题