私はかなりの間この問題を回避するために苦労していますが、私にとってはうまくいく解決策を見つけることができません。エラーページは常に部分的に読み込まれます
OnExceptionメソッドを、他のすべてのコントローラが継承するBaseControllerクラスでオーバーライドすることによって、すべてのエラーを処理します。
protected override void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
var rd = new RouteData
{
Values = { ["controller"] = "Error", ["action"] = "Index" },
DataTokens = { }
};
var error = [email protected]"Error: {filterContext.Exception.Message} in {filterContext.HttpContext.Request.FilePath}
Details:
{filterContext.Exception.StackTrace}";
_logger = LogManager.GetLogger(GetType());
_logger.Error(error + Environment.NewLine + "Temp Id: " + AppSession.TempId);
IController c = new ErrorController();
c.Execute(new RequestContext(new HttpContextWrapper(System.Web.HttpContext.Current), rd));
}
マイエラーコントローラは非常に単純です:
public ActionResult Index()
{
ViewBag.Error = "Oops.. Something went wrong";
return View("Error");
}
それは動作しますが、エラーページが現れるが、それは常に部分ビューコンテナ、エラーが発生した部分図の内側にアップロードします。代わりに、ちょうどエラーページだけに適切なリダイレクトをしたい。
私はこのようにエラーを使用して処理しようとしましたが、まったく同じように動作します。私はまた、私は何も違いはないと知っていたGlobal.asax Application_Errorメソッドでエラーを処理しようとしましたが、私は とにかく試してみたかった..
私の推測は、$ .get部分的なビューがロードされていたのと同じdiv /コンテナに応答をラップします。
ご協力いただければ幸いです。より多くの情報が必要な場合は、私に知らせてください。
は私も... SO同様のシナリオが、ノーポストのために、私が見つけたことを、良い解決策を持っている上、事前に感謝を探してみました。
ahh $(document).ajaxError!それは決して考えなかった。私は応答としてjsonを送信することを考えていましたが、すべてのAjax関数のエラー処理を一般化する方法は不明でした。私はこれがうまくいくかもしれないと思う。ありがとう、私はそれを行くだろう! – Johny
もう一度ありがとう!これは魅力的に機能しました。答えとしてマーク:) – Johny