天天看點

MVC4 自定義錯誤頁面(轉)

一、概述

MVC4架構自帶了定義錯誤頁,該頁面位于Shared/Error,該頁面能夠顯示系統未能捕獲的異常,如何才能使用該頁面;

二、使用步驟:

1、配置WebConfig檔案,在System.Web節點下加上

翻閱一些大神寫的部落格,在他們的部落格中指出defaultRedirect是指向錯誤頁面的URL,可是經過本人測試的時候,發現在MVC4中這種說法并不準,在MVC中,有一套預設的機制(這部分代碼被微軟封裝,無法閱讀),該機制能夠把錯誤資訊通過HandleError屬性指向Shared/Error頁面,也就是說配置System.Web節點,可以省略defaultRedirect

2、Global檔案,添加HandleEffor屬性

在Global定義之後,也就是全局定義,其他Action和Control都不需要定義,預設使用HandleError控制屬性;

這樣就可以使用MVC4中系統預設的Error頁面;

三、自定義錯誤頁面

  有些時候,我們想使用自定義的錯誤頁面,該怎麼處理那,翻頁其他大牛寫的部落格,看到有這種方式,自定義屬性Class繼承FileterAttribute,重寫OnException方法,代碼如下

MVC4 自定義錯誤頁面(轉)
MVC4 自定義錯誤頁面(轉)

将該屬性注冊到全局Global中,定義鋪貨異常等級

MVC4 自定義錯誤頁面(轉)
MVC4 自定義錯誤頁面(轉)

當然我們也可以不使用MVC架構自帶的Error頁面,定義一個Error404,如何使用這個頁面那 ,起始也挺簡單的,代碼如下

MVC4 自定義錯誤頁面(轉)
MVC4 自定義錯誤頁面(轉)

四、遇到問題總結

1、遇到重定向,URL指向aspxerrorpath,如:

http://local:8090/error/error.htm?aspxerrorpath=/cmt/p/3789549.html

出現這個問題的主要原因:

1>、Global沒有添加 

filters.Add(new HandleErrorAttribute(View="Error404"))

2>、Shared目錄沒有Error頁面;

3>、如果存在Error頁面,但是頁面是用了布局Layout,組成的Error頁面存在錯誤,比如ModeView資料不對等,需要詳查;

2、自定義Error的其他方式

代碼粘貼如下:

MVC4 自定義錯誤頁面(轉)
MVC4 自定義錯誤頁面(轉)

實作樣式多樣,隻要實作功能就是最好;

原文:http://www.cnblogs.com/xibei666/p/5153807.html

繼續閱讀