Leppi, iNếu bạn muốn gửi đến kết quả hành động, bạn có thể xác định hành động và bộ điều khiển để chuyển hướng trên lỗi. Đó là một ví dụ tốt, nhưng personaly tôi không thích sử dụng các trang tùy chỉnh hoặc mã http để mã
Đây là ví dụ về IExtenptionFilter của tôi. Trình kiểm soát cơ sở của tôi có IExceptionFilter mặc định để xử lý tất cả các lỗi không được kiểm soát.
[SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes",
Justification = "This attribute is AllowMultiple = true and users might want to override behavior.")]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class GenericExceptionHandlerFilter : ActionFilterAttribute, IExceptionFilter
{
public Type ExceptionType { get; set;}
public string RedirectToAction { get; set;}
public string RedirectToController { get; set;}
protected bool ApplyFilter(ExceptionContext filterContext)
{
Type lExceptionType = filterContext.Exception.GetType();
return (ExceptionType == null ||
lExceptionType.Equals(ExceptionType));
}
#region IExceptionFilter Members
public void OnException(ExceptionContext filterContext)
{
if (ApplyFilter(filterContext))
{
IbfControllerLogger.Log(filterContext.Exception);
filterContext.ExceptionHandled = true;
#region Calculate Action Controller Error
RouteValueDictionary lRoutes = new RouteValueDictionary(new
{
action = RedirectToAction,
controller = String.IsNullOrEmpty(RedirectToController) ? (string)filterContext.RouteData.Values["controller"] : RedirectToController
});
UrlReWriterUtils.UrlReWriter(filterContext.Controller.ViewData, lRoutes);
#endregion
filterContext.Controller.TempData[TempDataName.C_TEMPDATA_EXCEPTIONERROR] = filterContext.Exception;
filterContext.Result = new RedirectToRouteResult(lRoutes);
}
}
#endregion
Nguồn
2009-04-16 14:40:07
HandleError chuẩn không cho phép tôi định tuyến đến bộ điều khiển mà tôi nghĩ. Vì vậy, đó không phải là những gì tôi cần. Tôi nghĩ rằng tôi sẽ phải cuộn của riêng tôi sau đó. Không xảy ra bất kỳ tài liệu nào tốt để tham khảo ở đây? –
Yup, http://haacked.com/archive/2008/08/14/aspnetmvc-filters.aspx – CVertex
Jep, nhận thấy các liên kết trong thư trả lời của bạn trễ một chút: P Cảm ơn. Tôi đang tạo một RerouteFilterAttribute ngay bây giờ. Có khá một số thử/lỗi đang diễn ra, nhưng tôi sẽ đến đó. –