asp.net-mvc – 为什么我的ActionFilters都没有运行?
我今天早些时候在
asked a question关于ASP.Net MVC中的ActionFilters.原来我的问题是我的ActionFilter甚至没有运行.除了我读过
this article的其他内容,我找不到他做的任何我不做的事情.
这是我的代码: // The ActionFilter itself public class TestingIfItWorksAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.Controller.TempData["filter"] = "it worked!"; base.OnActionExecuting(filterContext); } } // The Controller Action with the filter applied [TestingIfItWorks] public ActionResult Test() { var didit = TempData["filter"]; return View(); } 我在调试时永远不会遇到过滤器方法中的断点,并且在呈现视图时TempData [“filter”]保持空值. 为什么这不起作用? 解决方法
根据您对其他答案的评论
通过单元测试进行测试时,不会调用过滤器.如果要调用过滤器,则需要模拟ControllerActionInvoker.最好是单独测试过滤器本身,然后使用反射来确保过滤器应用于具有正确属性的操作.我更喜欢这种机制而不是组合测试过滤器和动作. 原版的 当然,您需要覆盖您的方法,否则您实际上并没有替换基类上的方法.我原以为编译器会抱怨你需要一个新的或覆盖它.如果您不包含override关键字,则其行为就像您使用new一样.由于框架将其作为ActionFilterAttribute调用,这意味着永远不会调用您的方法. 引自MSDN:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Forms身份验证应用程序中的ASP.NET Web服务
- asp.net-mvc – 在不同的服务器上将ASP.NET Web API应用程序
- .net – 如何更改乌节纪录库
- asp.net – 如何在Repeater中为LinkBut??ton做AsyncPostBac
- asp.net – 为什么WebMethod访问会话状态没有EnableSession
- asp.net – 如何在KeyUp上进行文本框回发?
- ASP.NET MVC模型绑定IList <>参数
- asp-classic – 在经典ASP中本地化记录集中的日期
- asp.net-mvc – 如何将查询字符串映射到MVC中的操作方法参数
- 我可以在.NET中设置IIS MIME类型吗?
- asp.net – 在什么情况下,.NET进程和AppDomains在
- asp.net-mvc – 页面重定向不起作用
- ASP.Net自定义会话状态管理
- Asp.Net MVC EnableClientValidation不起作用
- ASP.NET(AJAX+JSON)实现对象调用
- asp.net-mvc – 基本MVC:“modelItem =>”做什么
- “XmlDocumentationProvider”不实现接口成员“I
- asp.net – 在Azure部署期间(彻底改变)Web.confi
- asp.net – 覆盖webapi odata链接的主机
- asp.net-mvc – 在ASP.NET MVC项目和Cordova项目