使用<add key="UnobtrusiveJavaScriptEnabled" value="true" />的坑
来源:互联网 发布:天下数据 科学上网 编辑:程序博客网 时间:2024/06/03 19:18
这阶段在做一个文件输出浏览器保存的内容,使用的是mvc4,但是由于需要FileResult和javascriptResult同时可以输出,我这边定义了ActionResult做为输出,其中的代码很简单,就是让datatable可以在excel的流写入,然后通过File方法保存浏览器。
/// <summary> /// NPOI插件保存excel到网页,用于MVC4 /// </summary> /// <returns></returns> public ActionResult DownLoadExcel() { string Path = AppDomain.CurrentDomain.BaseDirectory + "Resource\\Config\\DatetimeConfig.xml"; XElement xele = XElement.Load(Path); if ((string)xele.Attribute("content") != "") { DateTime dateTime = DateTime.Parse((string) xele.Attribute("content")); TimeSpan span = DateTime.Now - dateTime; if (span.TotalMinutes < 30) { //Response.Redirect("/Home/Index"); return this.Content("<script>alert('30分钟内不能重复导出到excel!')</script>"); return this.Content("alert('作成功')", "application/x-javascript"); return Content("alert('购物订单成功处理!');", "text/javascript"); //string script = string.Format("alert('库存不足! ({0})');", ":"); //return JavaScript(script); return JavaScript("alert('30分钟内不能重复导出到excel!');"); //return Content("<font color='red'>你好啊ContentResult</font>"); // return new EmptyResult(); } } //延迟30分钟再可以提交 string sql = "SELECT [UserID],[UserCode],[UserName],[ParentID],[Position],[Mobile],[Email],[Levels],[AttentionTime]FROM Users WHERE CreateStatus = 1 AND(AttentionState = 1); "; DataTable dt = ObjectContainer.Instance.GetObject<ISqlExportService>().GetDataTableFromSql(Request, sql); //创建Excel文件的对象 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); //添加一个sheet NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); //给sheet1添加第一行的头部标题 NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0); //row1.RowStyle.FillBackgroundColor = ""; for (int i = 0; i < dt.Columns.Count; i++) { row1.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName); } //将数据逐步写入sheet1各个行 for (int i = 0; i < dt.Rows.Count; i++) { NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { rowtemp.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString().Trim()); } } string strdate = DateTime.Now.ToString("yyyyMMddhhmmss");//获取当前时间 // 写入到客户端 System.IO.MemoryStream ms = new System.IO.MemoryStream(); book.Write(ms); ms.Seek(0, SeekOrigin.Begin); DateTime = DateTime.Now; xele.SetAttributeValue("content", DateTime); xele.Save(AppDomain.CurrentDomain.BaseDirectory + "Resource\\Config\\DatetimeConfig.xml"); return File(ms, "application/vnd.ms-excel", strdate + "Excel.xls"); }
其中做了30分钟的重复登录限制,如果输出一次再点击的话低于30分钟会不允许并且弹出窗口提示,这是问题的关键,那我这个control还会执行,弹出后希望保持在当前页面,我最先想到的在Onsucess中定义JavaScript的函数来进行回退跳转,这个方法一直不能执行。function refresh(e) { alert("test"); } function SearchSqlToExcel() { var parameters = { Sheetname: "User", fileName: "e:\\a.xls" }; $.ajax({ type: "POST", url: "@Url.Content("~/SqlExportService/DownLoadExcel")", contentType: "application/json", data: JSON.stringify(parameters) }); }</script>@using (Ajax.BeginForm("DownLoadExcel", "SqlExportService", new AjaxOptions{ HttpMethod = "Post", OnSuccess = "refresh", OnBegin = "" })){ <input type = "submit" value = "导出excel" />}
后来找过很多资料,也在本博客中转载贴出,研究了ContentResult和EmptyResult以及JavascriptResult的各种输出,最后说<script type="text/javascript" src="@Url.Content("~/Resource/Scripts/jquery.unobtrusive-ajax.js")"></script>这段没有写,之后又说jquery要1.8.3,再后来也把web.config的<add key="UnobtrusiveJavaScriptEnabled" value="true" />也加到Appsetting,refresh终于可以执行了,但是文件却不能下载了。最初的目的实现不了了,后来只能再想起他办法。
0 0
- 使用<add key="UnobtrusiveJavaScriptEnabled" value="true" />的坑
- 控制台app.config 的 <add key="aspnet:MaxHttpCollectionKeys" value="10000" />无效
- 提高map[key]=value的效率
- Struts2笔记:struts.devMode value="true"导致的错误
- C# Hashtable初始化,foreach、Add、ht[key]=value、Remove()、Contain()、clear()
- Map的key和value的使用
- $key=>$value略解
- memcache取出key=>value
- KVC(key value coding)的使用
- KVO(key value observing)的使用
- KVO (key-value observing)的使用
- Memcached expire 设置错误引起的set(key,exp,value)为true而get(key)为null的问题
- Memcached expire 设置错误引起的set(key,exp,value)为true而get(key)为null的问题
- Memcached expire 设置错误引起的set(key,exp,value)为true而get(key)为null的问题
- PHP foreach的两种用法 as $key => $value
- PHP foreach的两种用法 as $key => $value
- PHP foreach的两种用法 as $key => $value
- PHP foreach的两种用法 as $key => $value
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- 【asp.net中如何防止用户重复点击提交按钮】
- 2016在路上
- 数据库的使用
- 批处理作业
- 使用<add key="UnobtrusiveJavaScriptEnabled" value="true" />的坑
- ffmpeg ./configure参数说明
- abap smartforms 实现单据
- linuxtomacat如何将监听端口改为80
- String类型的不变性理解:
- 使用CMake编译代码教程之0
- ThinkPHP中自动验证
- 穷人为何穷,富人为何富
- ABAP 常用FUNCTION集锦