FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 4603|回复: 6
打印 上一主题 下一主题

【建议作者下版本可以加上】ExtAspNet IE6 上传出错的解决

[复制链接]
跳转到指定楼层
楼主
发表于 2012-5-18 22:15:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
修改 Business/ResourceManager/ResponseFilter.cs
将 Close()方法中的
            // 文件上传,此时应该对返回的数据进行编码,因为ExtJs会将返回的数据放在<pre></pre>中,导致自定编码
            if (HttpContext.Current.Request.ContentType.Contains("multipart/form-data"))
            {
                // HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号,而客户端的 encodeURIComponent 则是将空格转换为 %20
                responseText = HttpUtility.UrlEncode(responseText);
                responseText = responseText.Replace("+", "%20");
            }
修改为
            // 文件上传,此时应该对返回的数据进行编码,因为ExtJs会将返回的数据放在<pre></pre>中,导致自定编码
            if (HttpContext.Current.Request.ContentType.Contains("multipart/form-data"))
            {
                // HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号,而客户端的 encodeURIComponent 则是将空格转换为 %20
                responseText = HttpUtility.UrlEncode(responseText);
                responseText = responseText.Replace("+", "%20");
                responseText = "<pre>" + responseText + "</pre>";
            }
其中红色代码行为新添加的。
在IE6上出错的原因是,上传事件触发后,页面会接收返回结果,,ResourceManager在执行Page_PreRenderComplete的时候HttpContext.Current.Response.ContentType = "text/plain";这句将返回内容解析为源代码并由X.ajax.js中的new Function(scripts)();解析成JS代码,而在IE6上,返回结果会因为格式错误而出错,导致new Function(scripts)();时出错。
该解决方案应该算是一种技巧的解决方式,因为有上传控件时,本身Ext就会在返回结果中添加<pre>标记,程序在执行过程中会删除此标记。在修改上坚持尽量少的更改。
以上解决方案已在实际项目中验证通过,没有ie6的童鞋可以安装IETester进行调试。
沙发
发表于 2012-5-18 22:33:44 | 只看该作者
感谢分享!
板凳
 楼主| 发表于 2012-5-18 22:41:15 | 只看该作者
swtseaman 发表于 2012-5-18 22:33
感谢分享!

由于我们的项目对浏览器的兼容性要求比较高,以后我会及时发现问题,如果能解决的话一定贴上来大家分享。
地板
发表于 2012-5-19 14:10:42 | 只看该作者
刚才用IETester测试了一下,在IE6下上传没问题:


你用的是啥版本?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
5#
 楼主| 发表于 2012-5-20 19:47:56 | 只看该作者
本帖最后由 松松工作室 于 2012-5-20 19:54 编辑

恩?咋你那没出错呢?


在上传成功后返回的data.responseText中的内容是
<TABLE width=400>
<P style="FONT: 13pt/15pt verdana">无法显示 XML 页。
<P style="FONT: 8pt/11pt verdana">无法查看使用 样式表的 XML 输入。请更正错误然后单击 <A href="javascript:location.reload()" target=_self>刷新</A> 按钮,或稍后重试。
<HR>

<P style="FONT: bold 8pt/11pt verdana">文档的顶层无效。处理资源 'http://localhost:4765/form/fileupload.aspx' 时出错。第 1 行,位置: 1 </P><PRE style="FONT-WEIGHT: normal; FONT-SIZE: 10pt; LINE-HEIGHT: 12pt; FONT-STYLE: normal; FONT-VARIANT: normal"><FONT color=blue>X.enable('SimpleForm1_btnSubmit')%3bvar%20x0%3dX('SimpleForm1_tbxUseraName')%2cx1%3dX('labResult')%3bX.state(x0%2c%7b%22Text...</FONT></PRE></P>
<TBODY></TBODY></TABLE>
所以后面就没法解析了,我用的IETester 0.4.11
单位的机子上装的系统自带的IE6也出错

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
6#
发表于 2012-5-21 08:08:02 来自手机 | 只看该作者
松松工作室 发表于 2012-5-20 19:47
恩?咋你那没出错呢?



你用的extaspnet是啥版本?
7#
 楼主| 发表于 2012-5-21 09:37:29 | 只看该作者
support 发表于 2012-5-21 08:08
你用的extaspnet是啥版本?

ExtAspNet 3.1.5
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-4 05:47 , Processed in 0.050412 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表