MVC 为什么 RouteData 为空
本文关键字:为空 RouteData 为什么 MVC | 更新日期: 2023-09-27 18:36:34
我正在尝试更改所有控制器的默认 ViewBag.Title,所以我想创建一个从控制器继承并在那里处理标题的基类:
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 是空的。
怎么会是空的?我能做什么?
在
将任何值分配给控制器之前,您正在构造函数中执行代码。
更好的位置是在 OnActionExecute 中,如下所示:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
var controller = default(object);
if (RouteData.Values.TryGetValue("controller", out controller))
{
ViewBag.Title = controller;
}
}