次のようにメソッドをCustomHandleErrorAttribute
オーバーライドする場所があります。OnException
public override void OnException(ExceptionContext filterContext) {
if (!filterContext.ExceptionHandled) {
if (filterContext.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest") {
filterContext.Result = new JsonResult {
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new {
error = true,
message = filterContext.Exception.Message
}
};
}
else {
var controllerName = (string)filterContext.RouteData.Values["controller"];
var actionName = (string)filterContext.RouteData.Values["action"];
var model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName);
filterContext.Result = new ViewResult {
ViewName = View,
MasterName = Master,
ViewData = new ViewDataDictionary<HandleErrorInfo>(model),
TempData = filterContext.Controller.TempData
};
}
}
}
AJAX リクエストによって、およびAction
処理中に例外を取得できます。
例外がスローされたとき(たとえば、ページ上/Customers/Customer/1
)に問題がありますが、ビューを表示yellow screen
して、処理された例外に関する情報Server Error in '/' Application
に渡し、このページに表示したいと思います(または他の場所にリダイレクトしないでください) )。ViewData
CustomErrorPage
1.例外がある場合は、フォームなしで例外情報を表示するだけです。2. 例外表示フォームがない場合。
それは可能ですか、またはスローされた例外がアクションの処理を続行できず、同じビューを表示できませんでしたか?
どうも。