カスタムの HandleErrorAttribute を追加するか、基本コントローラーを使用してすべてのコントローラーに継承することができます。いずれにせよ、次のように RouteData オブジェクトを取得する必要があります
var routeData = filterContext.RouteData;
そのオブジェクトを使用すると、必要に応じてすべてのルート値を取得できます。詳細については、MSDN サイトのオブジェクト定義を確認してください
次のルートがあるとします
routes.MapRoute(
"Language", // Route name
"{language}/{controller}/{action}/{id}", // URL with parameters
new { language = "en", controller = "Sites", action = "Index", id = UrlParameter.Optional } // Parameter default
次にrouteData.Values.Keys
、パラメーターの名前とrouteData.Values.Values
値自体が表示されます
次に、例外を処理する場所で、次のようにルート データを TempData 変数に格納できます。
TempData["RouteData"]
その後、エラーページで利用できるようになります
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Error";
}
<h2>
Sorry, an error occurred while processing your request.
</h2>
@TempData["RouteData"];