问题描述:

  项目环境为,.Net Mvc5+EF6……前端框架使用的是EasyUI v1.4.4。
  在视图页面中,使用form的submit方法提交表单数据时,如果是使用IE的话,请求成功后IE会提示下载内容,关于这个下载内容,则是由于IE默认的Content-Type为text/html,而我们喜欢用的Google浏览器默认的Content-Type为application/json。
 
解决办法:
  那么根据以上的问题描述,我们可以在返回数据之前设置返回的Content-Type为text/html即可。
 
解决代码:
  我们可以自定义一个JsonResult方法:
 
 /// <summary>
/// 自定义JsonResult,
/// </summary>
/// <param name="data">数据</param>
/// <param name="behavior">行为</param>
/// <returns>JsonReuslt</returns>
protected JsonResult JsonSubmit(object data, JsonRequestBehavior behavior = JsonRequestBehavior.AllowGet)
{
return new JsonResultOverride
{
Data = data,
ContentType = "text/html",
//ContentEncoding = contentEncoding,
JsonRequestBehavior = behavior,
FormateStr = "yyyy-MM-dd HH:mm:ss"
};
}

附JsonResultOverride类:

 /*****************************************************************************************************
* 本代码版权归Quber所有,All Rights Reserved (C) 2015-2088
* 联系人邮箱:qubernet@163.com
*****************************************************************************************************
* 命名空间:QUBER.Web.App_Common.Mvc
* 类名称:JsonResultOverride
* 创建时间:2015-11-25 15:53:04
* 创建人:Quber
* 创建说明:重写MVC的JsonResult
*****************************************************************************************************
* 修改人:
* 修改时间:
* 修改说明:
*****************************************************************************************************/
using System;
using System.IO;
using System.Web.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters; namespace QUBER.Web.App_Common.Mvc
{
/// <summary>
/// 重写MVC的JsonResult
/// </summary>
public class JsonResultOverride : JsonResult
{
#region 属性
/// <summary>
/// 格式化字符串
/// </summary>
public string FormateStr { get; set; } /// <summary>
/// Newtonsoft.Json序列化配置
/// </summary>
public JsonSerializerSettings Settings { get; private set; }
#endregion #region 构造
/// <summary>
/// 构造方法
/// </summary>
public JsonResultOverride()
{
Settings = new JsonSerializerSettings
{
//解决.Net MVC EntityFramework Json 序列化循环引用问题
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
};
//添加默认时间转换格式
//Settings.Converters.Add(new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
}
#endregion #region 重写
/// <summary>
/// 重写执行视图
/// </summary>
/// <param name="context">上下文</param>
public override void ExecuteResult(ControllerContext context)
{
if (context == null) { throw new ArgumentNullException("context"); }
if (JsonRequestBehavior == JsonRequestBehavior.DenyGet && string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)) { throw new InvalidOperationException("JSON GET is not allowed"); }
var response = context.HttpContext.Response;
response.ContentType = string.IsNullOrEmpty(ContentType) ? "application/json" : ContentType;
if (ContentEncoding != null) { response.ContentEncoding = ContentEncoding; }
if (Data == null) { return; }
var scriptSerializer = JsonSerializer.Create(Settings);
scriptSerializer.Converters.Add(new IsoDateTimeConverter { DateTimeFormat = FormateStr });
using (var sw = new StringWriter())
{
scriptSerializer.Serialize(sw, Data);
response.Write(sw.ToString());
}
}
#endregion #region 方法 #endregion
}
}

EasyUI form ajax submit到MVC后,在IE下提示下载内容的解决办法的更多相关文章

  1. 【SpringMVC】【EasyUI】关于使用EasyUIForm上传文件,返回JsonIE提示下载文件的解决办法!

    先说一下环境 EasyUI+SpringMVC+MyBatis 因为按正常手段,无法使用Ajax来提交一个包含文件的表单,故想到利用EasyUI的Form来提交,EasyUI的form封装了一套伪Aj ...

  2. STM32使用cube生成的程序后在keil5编译后首次SWD可以下载再次下载不行的解决办法。

    使用cube配置导出工程在keil5编译后首次SWD下载可以再次下载不行的解决办法. 1原因: cube使用的是HAL库,初始化语句里面禁用了调试功能. 在stm32f1xx_hal_msp.c中 _ ...

  3. SnagIt截图后无法在编辑器打开,不显示截图内容的解决办法(转)

    方法1: 用SnagIt截图后,弹出的编辑器里不显示刚才截图的内容,解决办法如下: 完全退出Snagit和编辑器,删除以下文件夹: Win7用户 C:\Users\Administrator\AppD ...

  4. ubuntu网络重启后或主机重启后,/etc/resolv.conf恢复原样的解决办法

    ubuntu网络重启后或主机重启后,/etc/resolv.conf恢复原样的解决办法 /etc/resolv.conf中设置dns之后每次重启该文件会被覆盖,针对这种情况找了一些个解决方法 防止/e ...

  5. 关于使用Ajax请求json数据,@RequestMapping返回中文乱码的几种解决办法

    一.问题描述: 使用ajax请求json数据的时候,无论如何返回的响应编码都是ISO-8859-1类型,因为统一都是utf-8编码,导致出现返回结果中文乱码情况. $.ajax({ type:&quo ...

  6. jquery获取不了ajax动态添加的内容的解决办法

    在HTML页面的一个button <div class="ajaxClick"> <button>内容</button> </div> ...

  7. wamp中修改后mysq数据库l闪退无法登陆解决办法

    WampServer安装后密码是空的,   修改一般有三种方式:   一是通过phpMyAdmin直接修改:   二是使用WAMP的MySql控制台修改.     三是重置密码    第一种:   1 ...

  8. Docker进入容器后使用ifconfig等命令“command not found”解决办法

      当进入一个容器后,使用ifconfig.ip addr等命令时,出现如下“command not found”:       解决办法:   yum update yum -y install n ...

  9. php安装扩展模块后,重启不生效的原因及解决办法

    在lnmp运维环境中,我们经常会碰到有些php依赖的扩展模块没有安装,这就需要后续添加这些扩展模块.在扩展被安装配置后,往往会发现php-fpm服务重启后,这些扩展并没有真正加载进去!下面就以一个示例 ...

随机推荐

  1. 【JavaScript】Registering JavaScript object methods as callbacks

    The registration of callback functions is very common in JavaScript web programming, for example to ...

  2. 《TCP/IP具体解释卷2:实现》笔记--IP多播

    D类IP地址(224.0.0.0到239.255.255.255)不识别互联网内的单个接口,但识别接口组,被称为多播组. 单个网络上的组成员利用IGMP协议在系统之间通信. 多播路由器用多播选录协议. ...

  3. 虚拟文件系统VFS

    Linux的文件系统是由虚拟文件系统作为媒介搭建起来的,虚拟文件系统VFS(Virtual File System)是Linux内核层实现的一种架构,为用户空间提供统一的文件操作接口.它在内核内部为不 ...

  4. ORB:新一代 Linux 应用

    Orbital Apps 给我们带来了一种新的软件包类型 ORB,它具有便携软件.交互式安装向导支持,以及离线使用的能力. 便携软件很方便.主要是因为它们能够无需任何管理员权限直接运行,也能够带着所有 ...

  5. 解析 iOS 动画原理与实现

    这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式. 什么是动画 动画,顾名思义,就是能“动”的画.人的眼睛对图像有短暂的记忆效应,所以当眼睛看到 ...

  6. iOS 关于流媒体 的初级认识与使用

    1.流媒体指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频.视频或多媒体文件.流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的数据流随时传送随时播 ...

  7. [C.Sharp] Color 颜色转换

    URL:http://www.cnblogs.com/taven/archive/2009/09/26/1574329.html 方法1: 引用命名空间:using System.Drawing; 1 ...

  8. Android(java)学习笔记61:多线程程序的引入

  9. OC之Block的用法和实现委托

    Block的基本概念 Block的基本用法 Block实现委托机制 一.Block的基本概念 Block是程序的代码块,这个代码块可以在需要的时候执行.IOS开发中,block到处可见,所以学好很重要 ...

  10. C语言中的命名空间

    C语言中的命名空间 命名空间是为了解决 "在相同作用域内如何区分 相同的标识符". 说明: ①只有在相同作用域的情况下才能使用到命名空间去区分标识符,在嵌套的作用域.不同的作用域区 ...