asp.net-mvc – Firefox在Ajax请求重定向期间不保留自定义标头:ASP.NET MVC解决方案
|
我在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”标志. 解决方法为了防止其他人在想知道为什么他们的基于头的调度在Firefox中失败之后偶然发现这个问题,这个问题在2010-10-11没有修复,在Firefox 3.6.10中测试过https://bugzilla.mozilla.org/show_bug.cgi?id=553888是相应的错误,并且从截至今天的最新评论(由Jonas,2010-09-16制作)这个问题将不会在Firefox 4中修复. 此外,这个bug似乎扩展到标准的可设置标头,例如Accept,这意味着一个Accept:application / json将在重定向后消失,你的xhr引擎很可能会得到一个HTML响应. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – FileUpload.hasFile始终为False
- asp.net-mvc – 类型或命名空间名称“Mvc”不存在
- asp.net – 为什么IFormFile显示为null,我该如何解决?
- asp.net-mvc – Editor为int选择一个字符串模板
- asp.net – 用户控件的属性在回发后失去价值
- .net – 动态创建的控件未触发事件处理程序
- asp.net-mvc – 在ASP.NET MVC 2中模板化Html.DisplayFor()
- asp.net – 表单验证忽略默认文档
- .net – 默认启用UnsafeHeaderParsing是否可以接受?
- asp.net – 会话 – 多个浏览器选项卡 – 不同的会话?
- asp.net-mvc-2 – 如何在ASP.NET MVC2中为Html.L
- asp.net操作xml增删改示例分享
- asp.net-mvc – mvc4future无法在ASP.NET MVC 5中
- 使用asp.net Web表单中的流返回可下载文件
- 在ASP.NET中禁用JavaScript时检测
- asp.net-mvc – ASP.NET MVC开源实境应用
- asp.net-mvc – 在asp.net MVC中排序表
- asp.net – 如何加密web.config中的一个条目
- asp.net – ASP MVC授权所有操作除了几个
- asp.net-mvc-2 – 是asp.net MVC2包括在.net 4.0
