我在jQuery中使用ajaxForm,并且Firefox存在一个问题 – 由于某种原因它不保留X-Requested-With自定义标头(用于检测IsAjaxRequest()).这导致我的控制器操作返回完整视图而不是部分视图,因为重定向后IsAjasxRequest()返回false.
这个错误只发生在Firefox中,例如在Chrome中运行良好.
你可以看到这个错误提到了here.一个很老的帖子所以我想知道为什么它仍然发生在我身上(我使用Firefox 3.5.3).无论如何,这是我发明的解决方案 – 在我的基础控制器类中:
protected override void OnActionExecuting(ActionExecutingContext filterContext) { var ajaxRequestBeforeRedirect = TempData["__isajaxrequest"] as string; if (ajaxRequestBeforeRedirect != null) Request.Headers.Add("X-Requested-With",ajaxRequestBeforeRedirect); } private bool IsRedirectResult(ActionResult result) { return result.GetType().Name.ToLower().Contains("redirect"); } protected override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); if (IsRedirectResult(filterContext.Result) && Request.Headers["X-Requested-With"] != null) TempData["__isajaxrequest"] = Request.Headers["X-Requested-With"]; }
有用;但是,我有两个问题:
>这个bug真的没有在Firefox中修复,或者我不明白的东西?
>这是一个很好的解决方案吗?有没有更好的?我不敢相信以前没有人遇到这个问题.
更新:对于那些对此问题感兴趣的人,Request.Headers.Add与IIS6(或者IIS5,但无论如何)有问题.所以正确的方法是在TempData / HttpContext.Items / base控制器中存储这个“isAjaxRequest”标志.
解决方法
原文地址:https://www.jb51.cc/aspnet/247169.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。