如何优雅地处理DefaultControlFactory的CreateController

时间:2011-10-11 07:04:42

标签: asp.net asp.net-mvc asp.net-mvc-3

我的页面上有一些链接尚未创建控制器。我有我的自定义控制器工厂:

 public class MyControllerFactory : DefaultControllerFactory
    {

        public override IController CreateController(RequestContext requestContext, string controllerName)
        {
            try
            {
                IController controller = base.CreateController(requestContext, controllerName);
                HttpContext.Current.Items["Controller"] = controller;
                return controller;
            }
            catch { return null; }
        }

    }

只要能找到控制器,这个工作正常。但是如果我从我的方法中返回null,我会抛出黄色的死亡屏幕。我怎样才能优雅地处理这个?我想重定向到某个页面以及404格式正确的消息,或者可能会显示一些消息,例如“正在进行中”。

1 个答案:

答案 0 :(得分:1)

您尝试添加此内容吗?

[HandleError(ExceptionType = typeof(NullReferenceException), Order = 1, View = "NotFound")]

您必须将NotFound视图添加到共享视图文件夹。使用此属性注释您的控制器工厂。