问题标签 [action-filter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
260 浏览

asp.net-mvc - 从单个测试中对所有控制器进行单元测试

我刚刚创建了一个操作过滤器,我想将它应用到我的几乎所有控制器(包括稍后介绍的任何新控制器)。

我认为一个真正有用的单元测试将是循环遍历每个控制器并验证如果满足某些条件,那么操作过滤器将影响结果。

创建一个针对多个控制器的单元测试是否明智?任何人都可以分享来自已证明有用的类似测试的代码吗?

编辑:刚刚意识到测试动作过滤器可能有问题。不过,如果您有关于控制器大规模测试的想法要分享...

0 投票
2 回答
10003 浏览

asp.net-mvc - MVC 使用动作过滤器检查 URL 中的参数。停止执行动作

我想做以下事情:

当 url 没有 instID 时,我想重定向到"Instelling"操作

在这个控制器中,每个方法都需要 instID。

所以这是在控制器中。

动作过滤器:

问题是:它确实有效,但是,动作本身首先被执行,然后重定向发生。这不是我想要的。

也许我不应该使用动作过滤器,而只是添加一条路线?在这种情况下,如果缺少 instID,我将如何将路由重定向到另一个控制器?

0 投票
1 回答
396 浏览

asp.net-mvc - 如果客户端不可用,如何自动重载 DELETE 和 PUT?

如何在应用程序启动时检测到客户端不支持DELETEPUT动词并自动重载 POST 动词?
在服务器端,如何将那些重载的 POST 动词重定向到正确的操作中?
假设我有一个被覆盖的 DELETE 请求,我如何在控制器中调用与该操作匹配的适当函数?
我的猜测是我应该使用一些动作过滤器并使用反射来检查与我的函数匹配的属性(在这个例子中:)DeleteFoo(Guid Id)

0 投票
2 回答
2969 浏览

asp.net-mvc - ASP.NET MVC 操作过滤器:在过滤器中设置 filterContext.Result 会阻止其他过滤器被执行?

我目前有 2 个过滤器,Auth 和 Redirect,它们执行以下操作:Filter Auth,实现 IAuthorizationFilter 和 ActionFilter,检查用户登录和授权,如果失败,则将 filterContext.Result 设置为 403(禁止)的 HttpStatusCodeResult。实现 IActionFilter 和 ActionFilter 的过滤器重定向检查结果,如果是 403,则重定向到登录页面。

我将它们应用于如下操作:

但是,Auth 被执行,但 Redirect 永远不会被执行(不是它提供的 4 种可覆盖方法之一)。如果我删除 Auth Redirect 会执行,但如果我将 Auth 作为第一个过滤器,则不会执行 Redirect。我猜想设置过滤器上下文的 Result 属性可以防止任何其他过滤器被执行,但我无法意识到为什么会发生这种情况。仅供参考,我正在使用 ASP.NET MVC 3 beta,但这不应该改变任何东西。

更新:将 Auth 的过滤器类型更改为 IActionFilter 而不是 IAuthorizationFilter 会导致重定向中的 OnResultExecuting 和 OnResultExecuted 触发,但更改 Response 对浏览器的最终响应没有任何影响。

0 投票
1 回答
1439 浏览

asp.net-mvc - c# 触发 pre 和 post 方法调用,如 mvc actionfilters

有没有办法在 asp.net mvc 中获取操作过滤器的功能,您可以在方法执行和发布方法调用之前调用和操作操作参数以更新/查看返回类型数据,但在标准 c# 类库类方法中?

0 投票
3 回答
58856 浏览

c# - 如何将参数传递给 ASP.NET MVC 2 中的自定义 ActionFilter?

我正在尝试创建一个自定义 ActionFilter,它对一组从控制器传递给它的参数进行操作。

到目前为止,我的客户 ActionFilter 看起来像这样:

我知道我仍然需要检查空值等,但我不知道为什么gr并且memberGuid没有成功通过。我这样称呼这个过滤器:

genesisRepositorymd在控制器的构造函数中设置。

我无法编译它。我得到的错误是:

我仔细检查了一下grmemberGuid它们的类型与genesisRepority和相同md.memberGUID,是什么导致了这些错误?

解决方案

感谢 jfar 提供解决方案。

这是我最终使用的过滤器:

0 投票
4 回答
2847 浏览

asp.net-mvc - 如何使用 ASP.NET MVC ActionFilter 替换呈现的 HTML 中的 URL

我正在尝试创建一个ActionFilter来替换我的 HTML 中的一些文本。基本上,当服务器使用 SSL 时,我想用直接对我的服务器 (https://www.example.com) 的引用替换对我的 CDN (http://cdn.example.com) 的引用。所以结构是这样的(我假设OnResultExecuted是我应该开始的地方):

这将在我的安全控制器中使用:

我想这样做的原因是我的 CDN 不支持 SSL。母版页中有对 CDN 资源的引用。例子:

0 投票
1 回答
281 浏览

model-view-controller - 使用动作过滤器处理 MVC 错误

我想知道处理异常的最佳实践。

我有 3 种异常流

1)警告: - 在此我需要显示从服务接收到的部分数据以及错误代码/消息。2)业务错误: - 在此没有数据只是收到错误代码,但我想显示带有所有控件(例如下拉菜单)和错误消息的视图。3)系统故障错误: - 在这种情况下,我想重定向到自定义错误页面。

我正在使用 Using ASP.NET MVC 并且 lang 是 C#

0 投票
1 回答
15705 浏览

c# - 可以从 ActionFilter 中获取方法中使用的参数值吗?

假设我有一个这样的控制器方法:

以及这样定义的属性:

我可以从 OnActionExecuted() 中获取 start/limit/sort/etc 的值吗?

0 投票
4 回答
2970 浏览

c# - MVC 3 压缩过滤器导致输出乱码

所以,我有一个名为 CompressAttribute 的自定义属性,它在 global.asax 中设置为全局过滤器。它使用反射来检查当前操作方法的返回类型,如果是“ViewResult”,它会使用 GZip 或 Deflate 压缩输出。它工作得很好,除非页面抛出 500 服务器错误。如果遇到错误,而不是显示 .NET 错误页面,我会得到一堆这样的:

��������`I�%&/m�{J�J��t��

显然它正在尝试对导致问题的 500 服务器错误页面进行编码。处理这个问题的最佳方法是什么?

这是过滤器代码: