2014-01-05 55 views
0

我試圖理解MVC3中的HandleErrorAttribute。 (我也跟着從ScottGu舊文章)我添加<customErrors mode="On" />web.config文件。所有錯誤重定向到\Views\Shared\Error.cshtml視圖。如果我保留HandleErrorAttribute或從控制器中刪除,行爲沒有區別。控制器MVC 3中HandleErrorAttribute的優點

public class HomeController : Controller 
{ 
    [HandleError] 
    public ActionResult Index() 
    { 
     ViewBag.Message = "Welcome to ASP.NET MVC!"; 
     throw new Exception(); 
     return View(); 
    } 


} 

的 代碼另外,我顯示在一些文章和SO後,與<error redirect="..."/>,請求可以被重定向到所需的視圖。

Qestions

  1. 什麼用的HandleErrorAttribute
  2. 使用它比<customErrors..有什麼優勢?
  3. 我們可以通過<customErrors..實現嗎?

回答

0

1)HandleErrorAttributeMSDN)是FilterAttribute,用於處理該引發錯誤控制器動作。我建議閱讀MSDN頁面上的文檔,因爲它描述了它的功能以及它可以使用的構造函數。此外,在您的webconfig中,您必須將customErrors部分設置爲。

<system.web> 
    <customErrors mode="On" defaultRedirect="Error" /> 
</system.web> 

2)現在定製錯誤部分用於允許當錯誤(例外)上升的Asp.Net應用程序來控制頁面的行爲。 (MSDN)當自定義錯誤設置爲OnRemoteOnly發生應用程序異常時,應用程序將使用Web.config中定義的規則顯示錯誤消息或重定向到頁面。

3)使用HandleErrorAttribute,您可以根據引發的異常類型提供不同的重定向\視圖。

我會推薦你​​查看這個SO主題的更多信息(閱讀以利亞莊園的職位)。 ASP.NET MVC HandleError

乾杯。

+0

我已經閱讀過這個答案。這就是我得到鏈接到斯科特的文章 –

+0

偉大的。因此,提供HandleError(使用無參數構造函數)將導致與customErrors行爲相同的行爲。優點是爲這些處理程序類型提供錯誤類型和處理程序。 – Nico

+0

我認爲這是我們無法通過使用'customerror' –

相關問題