.Net MVC JsonResult在IE下返回值變成下載文件問題

昨天,有用戶反饋公司的系統,一提交表單就變成了下載文件。匆匆忙忙地發現是IE瀏覽器(360兼容模式,不就是IE內核嗎),返回Json格式的字符串變成了下載JSON文件。(代碼以下)html

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

 發現問題以後,爲了快速響應用戶的問題,咱們只能將此處的方法換成json

  return Content(JsonConvert.SerializeObject(obj));  

由於昨天改地比較匆忙,也沒有功夫思考這個問題。今天閒下來的時候,乘着喝杯水的功夫來各類百度。。。發現,IE8及其如下好像會默認把ContentType="application/json"的報文當成JSON文件而且下載。瀏覽器

而後,下面就是各類解決方案了。將application/json換成text/html(將文件的content-type設置爲text/html的形式,瀏覽器在獲取到這種文件時會自動調用html的解析器對文件進行相應的處理),或者將app

其換成text/plain(將文件設置爲純文本的形式,瀏覽器在獲取到這種文件時並不會對其進行處理)。測試

因此這邊若是咱們調用JsonResult方法的時候,最後將ContentType設置成text/plain(我的喜愛偏向這個)。htm

下面是我測試的方法,共你們參考。blog

        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);
        }


相關文章
相關標籤/搜索