您的位置:首页 > 编程语言 > C#

c# mvc 封装返回对象

2017-06-18 17:34 141 查看
将所有返回JsonContent对象进行再次封装

public class ResultFilterAttribute : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{

if (filterContext.Exception != null)
{
base.OnActionExecuted(filterContext);
return;
}
if (filterContext.Result is JsonResult)
{
var invokeResult = new InvokeResult<object>
{
Success = true
};
var result = filterContext.Result as JsonResult;
invokeResult.Data = result.Data;
result.Data = invokeResult;
base.OnActionExecuted(filterContext);
return;
}

base.OnActionExecuted(filterContext);
return;

}
}


对异常信息处理,避免黄页显示

public class MvcExceptionFilterAttribute : IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{

var invokeResult = new InvokeResult<object>();

if(filterContext.Exception is DomainException)
{
invokeResult.Message = filterContext.Exception.Message;
}
else
{
invokeResult.Message = filterContext.Exception.Message + (filterContext.Exception.StackTrace??"");
//记录日志
}
var jsonResult = new JsonResult
{
Data = invokeResult,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
filterContext.ExceptionHandled = true;
filterContext.Result = jsonResult;

}
}


最后全局注册

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ResultFilterAttribute());
filters.Add(new MvcExceptionFilterAttribute());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐