2011-11-15 62 views
0

在ASP.NET MVC im中覆蓋了OnException,所以我可以對異常做一些自定義錯誤處理。我想在這裏做的一件事是從web應用程序的哪個區域登錄發生的錯誤。檢查控制器是否爲特定「控制器組」的一部分

例如,我們在Web應用程序中有Webshop和Administration區域。然後我想確定這個異常是來自Web商店控制器還是管理控制器。這是我有:

protected override void OnException(ExceptionContext filterContext) 
     { 
      if (filterContext.Exception != null) 
      { 
       ErrorTargetType targetErrorType = ErrorTargetType.DipService; 

       if (filterContext.Controller is CatalogController) 
        targetErrorType = ErrorTargetType.WebshopInterface; 

       LogException(filterContext.Exception, targetErrorType); 
      } 
      base.OnException(filterContext); 
     } 

它工作正常,但我想做的管理控制器集合的if語句insted。 ASP.NET MVC是否具有一些標準功能,可以將集合中的所有控制器提供給Web應用程序,如果是這樣,我如何將Webshop控制器與管理控制器分開?

+0

你有沒有考慮過使用'filterContext.Controller'的命名空間?例如'filterContext.Controller.GetType()。FullName' – Buildstarted

回答

3

在web應用的所有控制器集合中

一個採集控制器控制器組的是,沒有在ASP.NET MVC中存在的概念,也不它使多大意義。您撥打ControllerA,ControllerBControllerC作爲的一部分的事實管理是隻有您已定義的概念。 管理的唯一概念在ASP.NET MVC中幾乎沒有任何意義。在ASP.NET MVC中,你有模型,視圖,當然還有控制器。

如果是這樣,我怎麼從管理控制器分離Webshop控制器?

使它們來源於共同的基礎控制器或使它們實現marker interface

+1

很好的答案。有時候這樣的事情只是在回答問題時滑倒我的頭腦。我可能會在我的項目中使用接口路線。 :) – Buildstarted

+0

我的理由我想這樣做是因爲我需要記錄錯誤發生的地方,所以我可以提供給用戶一個錯誤代碼,他們可以提供給我們的支持。然後我們的支持可以將錯誤提交給正確的員工。 – Poku

相關問題