asp.net-mvc – 在WebApi的ActionFilterAttribute的OnActionExec
发布时间:2020-12-16 03:30:58 所属栏目:asp.Net 来源:网络整理
导读:我的WebApi操作方法返回IQueryable,我想通过Asp.Net WebApi(非MVC)中的ActionFilterAttribute修改它(应用分页和过滤). 以下线程我得到了如何访问传递的模型: .Net Web API IActionFilter.OnActionExecuted return type 但是如何用其他东西改变/替换整个模型
我的WebApi操作方法返回IQueryable,我想通过Asp.Net WebApi(非MVC)中的ActionFilterAttribute修改它(应用分页和过滤).
以下线程我得到了如何访问传递的模型: .Net Web API IActionFilter.OnActionExecuted return type 但是如何用其他东西改变/替换整个模型呢? 解决方法
我找到了!
首先,我应该将actionExecutedContext.ActionContext.Response.Content转换为ObjectContent(您应该对项目中的System.Net.Http.Formatting.dll文件有所了解) 之后您可以简单地执行以下操作: public override void OnActionExecuted(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext) { IEnumerable model = null; actionExecutedContext.Response.TryGetContentValue(out model); if (model != null) { IQueryable modelQuery = model.AsQueryable(); //Do your modelQuery modification/replacement (actionExecutedContext.ActionContext.Response.Content as ObjectContent).Value = modelQuery; } base.OnActionExecuted(actionExecutedContext); } 注意:要使用TryGetContentValue方法,需要使用System.Net.Http导入;命名空间虽然在上面的代码中调用这个方法并不重要. ::更新:: 如果您需要更改Content的值类型(例如,返回字符串而不是IQueryable),则不能简单地更改该值.你应该创建一个这样的新内容: var result = "Something new!"; var oldObjectContent = (actionExecutedContext.ActionContext.Response.Content as ObjectContent); var newContent = new ObjectContent<string>(result,oldObjectContent.Formatter); actionExecutedContext.ActionContext.Response.Content = newContent; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET Application在不使用Global.asax的情况下启动
- asp.net核心 – ASP.NET vNext – 编译代码动态不适合我
- asp.net-mvc – 具有不同Http方法的RESTful控制器,但是相同
- ASP.NET Web Forms jQuery
- asp.net-core – ASP.Net 5登录类库
- asp.net-mvc – 为ASP.NET MVC Action Links添加rel和title
- asp.net – HTML5编辑器从微软词语粘贴时丢失格式
- asp.net-mvc – 如何在ASP.NET MVC中执行辅助操作(即计算字
- asp.net-mvc – 添加分页MVC和Azure表存储
- asp.net – 如何使用SqlDependency使OutputCache依赖于每个
推荐文章
站长推荐
- asp.net-mvc-4 – 使用基本HTTP身份验证的MVC4 a
- asp.net-core – 如何将ASP.NET 5从Beta6升级到B
- asp.net-core – 未配置身份验证处理程序来处理该
- asp.net-mvc – MVC3验证与实体框架模型/数据库首
- asp.net-web-api – WebApi 2.1 PUT抛出错误415
- .net – 解密字符串时偶尔出现错误数据错误:Sys
- asp.net-mvc – ActionLink jQuery参数
- ASP.NET ListView – 渲染THEAD / TBODY标签
- wcf – aspNetCompatibilityEnabled =“true”
- asp.net – 标签中的换行符
热点阅读