【发布时间】:2013-02-12 10:13:13
【问题描述】:
我正在尝试创建一个每个请求只运行一次的 ActionFilterAttribute,所以我正在做这样的事情。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.IsChildAction)
return;
// More stuff here
}
我可能需要检查filterContext.HttpContext.Request.IsAjaxRequest() 在某些情况下是否也是错误的,但我真正的问题是如何判断它不是重定向。当操作X 重定向到操作Y 时,过滤器会针对X 运行两次,针对Y 运行一次(IsChildAction 对于Y 是错误的)。
我试图在filterContext.HttpContext.Items 上保存一些密钥,这将告诉我过滤器已经运行,但这些项目不在X 和Y 之间共享。
我有什么想法可以从ActionExecutingContext 看出这是一个重定向吗?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 actionfilterattribute