2011-10-11 63 views
1

我的页面上有一些链接,但尚未创建控制器。我有我的自定义控制器工厂是这样的:如何优雅地处理DefaultControlFactory的CreateController

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格式良好的消息,或者显示一些消息,如“进行中”。

+0

的出发点是捕获异常并记录它,而不是隐藏它并返回null。在那一点上,你将能够解释抛出什么样的异常,并调查最好的方法来修复/避免这种情况... –

回答

1

你试过添加这个吗?

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

,你将有一个NOTFOUND视图添加到共享文件夹视图。使用此属性注释您的控制器工厂。

+0

谢谢。这工作! – Jaggu

+0

不客气:) – 2011-10-11 08:34:18

相关问题