2011-10-11 97 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

相關問題