Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 4th, 2012  |  syntax: None  |  size: 2.11 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. PartialViewResult is returning view with master page
  2. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
  3. public class IcpHandleErrorAttribute : FilterAttribute, IExceptionFilter
  4. {
  5.     private readonly Type _exceptionType = typeof(Exception);
  6.  
  7.     public IcpHandleErrorAttribute()
  8.     {}
  9.  
  10.     public void OnException(ExceptionContext filterContext)
  11.     {
  12.         if (filterContext == null)throw new ArgumentNullException("filterContext");
  13.  
  14.         if (filterContext.IsChildAction)return;
  15.  
  16.         if (filterContext.ExceptionHandled || !filterContext.HttpContext.IsCustomErrorEnabled)return;
  17.  
  18.         Exception exception = filterContext.Exception;
  19.  
  20.         if (new HttpException(null, exception).GetHttpCode() != 500)return;
  21.  
  22.         if (!_exceptionType.IsInstanceOfType(exception))return;
  23.  
  24.         var controllerName = (string)filterContext.RouteData.Values["controller"];
  25.         var actionName = (string)filterContext.RouteData.Values["action"];
  26.  
  27.         var model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName);
  28.  
  29.         ViewResultBase result;
  30.  
  31.         if (filterContext.HttpContext.Request.IsAjaxRequest())
  32.         {
  33.             result = new PartialViewResult { ViewName = "ErrorAjax" };
  34.         }
  35.         else
  36.         {
  37.             result = new ViewResult{ViewName = "Error"};
  38.         }
  39.  
  40.         result.ViewData = new ViewDataDictionary<HandleErrorInfo>(model);
  41.         result.TempData = filterContext.Controller.TempData;
  42.  
  43.         filterContext.ExceptionHandled = true;
  44.         filterContext.HttpContext.Response.Clear();
  45.         filterContext.HttpContext.Response.StatusCode = 500;
  46.  
  47.         filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
  48.     }
  49. }
  50.        
  51. @model HandleErrorInfo
  52.  
  53. @{
  54.     Layout = null;
  55. }
  56.  
  57. <div class="error">@Model.Exception.Message</div>
  58.        
  59. [HttpPost]
  60. public ActionResult Create(ProjectCreateCommand command)
  61. {
  62.     throw new NotImplementedException("ajax");
  63.  
  64.     return Post(command);
  65. }
  66.        
  67. GlobalFilters.Filters.Add(new IcpHandleErrorAttribute());
  68.  
  69.     RegisterGlobalFilters(GlobalFilters.Filters);
  70.        
  71. filterContext.Result = result;