• .Net MVC JsonResult在IE下返回值变成下载文件问题


    昨天,有用户反馈公司的系统,一提交表单就变成了下载文件。匆匆忙忙地发现是IE浏览器(360兼容模式,不就是IE内核吗),返回Json格式的字符串变成了下载JSON文件。(代码如下)

    return Json(obj, "application/json", JsonRequestBehavior.AllowGet);
    

     发现问题之后,为了快速响应用户的问题,我们只能将此处的方法换成

      return Content(JsonConvert.SerializeObject(obj));  

    因为昨天改地比较匆忙,也没有功夫思考这个问题。今天闲下来的时候,乘着喝杯水的功夫来各种百度。。。发现,IE8及其以下好像会默认把ContentType="application/json"的报文当成JSON文件并且下载。

    然后,下面就是各种解决方案了。将application/json换成text/html(将文件的content-type设置为text/html的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理),或者将

    其换成text/plain(将文件设置为纯文本的形式,浏览器在获取到这种文件时并不会对其进行处理)。

    所以这边如果我们调用JsonResult方法的时候,最后将ContentType设置成text/plain(个人喜好偏向这个)。

    下面是我测试的方法,共大家参考。

            public ActionResult GetJsonByApplicationJson()
            {
                var obj = new {Name = "zhangsan", Sex = "nan", Age = "18"};
                return Json(obj, "application/json", JsonRequestBehavior.AllowGet);
    
            }
           public ActionResult GetJsonByTextPlain()
            {
                var obj = new {Name = "zhangsan", Sex = "nan", Age = "18"};
                return Json(obj, "text/plain", JsonRequestBehavior.AllowGet);
            }
    
            public ActionResult GetJsonByTextHtml()
            {
                var obj = new { Name = "zhangsan", Sex = "nan", Age = "18" };
                //var content=Content(JsonConvert.SerializeObject(obj))
                return Json(obj, "text/html", JsonRequestBehavior.AllowGet);
            }
    
    
    

      

  • 相关阅读:
    Oracle 删除某个用户下的所有对象,执行需谨慎
    ORACLE常用性能监控SQL
    mysql千万级大数据SQL查询优化
    qt小例子:实现阿里云物联网设备登录信息计算器
    mqtt协议
    亚马逊物联网平台c-sdk的使用
    esp32-cam开发环境搭建
    qt小例子:实现选值框和滑块同步变化
    在qt5中使用qtmqtt库
    将short类型转换为char类型
  • 原文地址:https://www.cnblogs.com/huage-1234/p/11837036.html
Copyright © 2020-2023  润新知