gpt4 book ai didi

asp.net-mvc - 可靠地检测 IActionFilter.OnActionExecuted 中的重定向

转载 作者:行者123 更新时间:2023-12-01 02:58:47 26 4
gpt4 key购买 nike

我有一个 IActionFilterOnActionExecuted 中做了一些事情,但是我不想在 Controller 结果执行重定向时执行此操作。

我最初的想法是检查 ActionResult 的类型作为 RedirectResultRedirectToRouteResult ,但这并不可靠,因为任何类型的结果都可以执行重定向(实际上我有两个自定义的)。

有没有另一种方法可以检测到这种情况何时发生,或者是不可能的,因为在操作执行之前您不会知道重定向(这已经太晚了,无法执行我想要的操作)?

也许只是检查 ViewResultPartialViewResult会更可靠。

最佳答案

... this isn't reliable as any type of result can perform a redirect (indeed I have two custom ones that do)



如果他们执行重定向,则必须通过将 Result 设置为 RedirectResult 或类似内容来完成,而不仅仅是 Response.Redirect。
如果它是 Response.Redirect,那么它显然是错误的。
该示例是 AuthorizeAttribute,它将结果更改为 HttpUnauthorizedResult。

所以你仍然会得到 ControllerContext.Result 并且可以对它进行操作。

此外,如何应用约定:如果 ActionResult 类型的名称包含“重定向”字样,则它是重定向。
var isRedirect = filterContext.ActionResult.GetType().Name.Contains("Redirect");

If it looks like a duck, swims like a duck and quacks like a duck, then it probably is a duck.



解决方案当然并不完美,但简单易懂。

关于asp.net-mvc - 可靠地检测 IActionFilter.OnActionExecuted 中的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1681134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com