我建议使用过滤器属性。您可以实现这样的事情:
public class RedirectOnErrorAttribute : FilterAttribute, IExceptionFilter {
bool IsPartialRequest = false;
public void OnException(ExceptionContext filterContext) {
if(filterContext.ExceptionHandled) return;
/*then you can redirect to a specific page or to, for example,
special error handling controller*/
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Error", action = "HandleError", isPartialError = IsPartialRequest }));
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
}
}
而且在错误HandleError
操作方法处理控制器,你可以返回取决于isPartialError
参数具体查看。顺便说一句,你可以在这个动作方法中做另一个有用的事情 - 例如记录错误信息。
要使用这个属性,你可以用它装饰你的控制器类:与ListCategories
方法
[RedirectOnError]
public class MyController : Controller {
public ViewResult Index() {}
public ActionResult Create() {}
[RedirectOnError(IsPartialRequest=true)]
public PartialViewResult ListCategories() {}
}
讲究属性的使用 - 我明确告诉我,这是部分请求。我做这件事的原因很简单 - 路由系统对结果将被用作部分的事实一无所知。
您是否通过Ajax请求渲染了这部分内容? –