我已经创建了一个自定义HandleErrorAttribute,以便在异常处理过程中实现日志记录。但是,与日志记录无关,我遇到了一个问题,我需要在Ajax请求而不是JsonResult上呈现部分视图。我可以检测到它是一个ajax请求,但我无法弄清楚如何确定何时适合生成JsonResult或PartialView。在大多数情况下,JsonResult是合适的,但在某些情况下,PartialView是合适的。有没有办法确定OnException()中的操作是什么?
答案 0 :(得分:0)
我希望找到一种通过filterContext中的属性检测所需响应类型的方法,或者允许我动态确定预期响应类型的方法。在我的所有研究中,我找不到任何能够实现这一目标的东西。因此,我通过向自定义HandleErrorAttribute类添加bool属性(默认为false)来处理这种情况。然后,我将此属性应用于使用partialView而不是JsonResult进行响应的方法,将属性值设置为true。当属性值为true时,OnException()方法使用partialView而不是JsonResult进行响应。
如果有更好的方法,请告诉我。
答案 1 :(得分:0)
我认为以下代码段可以帮助您检测所需的响应类型
protected override void OnException(ExceptionContext filterContext)
{
//Determine the return type of the action
string actionName = filterContext.RouteData.Values["action"].ToString();
Type controllerType = filterContext.Controller.GetType();
var method = controllerType.GetMethod(actionName);
var returnType = method.ReturnType;
if (returnType.Equals(typeof(JsonResult)))
{
}
}