ASP.NET MVC Controller FileContent ActionResult通过AJAX调用
发布时间:2020-12-15 23:27:35 所属栏目:asp.Net 来源:网络整理
导读:设置: 控制器包含一个方法public ActionResult SaveFile(),它返回一个FileContentResult. 什么工作: 该视图包含一个表单,它提交到此操作.结果是这个对话框: 什么不行: 该视图包含一些javascript来执行AJAX调用到表单将发布的相同的控制器操作.而不是触发
设置:
控制器包含一个方法public ActionResult SaveFile(),它返回一个FileContentResult. 什么工作: 该视图包含一个表单,它提交到此操作.结果是这个对话框: 什么不行: 该视图包含一些javascript来执行AJAX调用到表单将发布的相同的控制器操作.而不是触发上述对话框,甚至是AJAX成功函数,响应触发AJAX错误函数,XMLHttpRequest.responseText包含文件响应. 我需要做什么: 使用AJAX对文件进行请求,结果与提交表单时的结果相同.如何使AJAX请求提供提交表单的对话框? 解决方法
这是一个快速的例子.这是LukLed正在调用SaveFile的概念,但是不要通过ajax返回文件内容,而是重定向到下载.
这是查看代码: <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { // hide form code here // upload to server $('#btnUpload').click(function() { $.ajax({ type: 'POST',dataType: 'json',url: '<%= Url.Action("SaveFile","Home") %>',success: function(fileId) { window.location = '<%= Url.Action("DownloadFile","Home") %>?fileId=' + fileId; },error: function() { alert('An error occurred uploading data.'); } }); }); }); </script> <% using (Html.BeginForm()) { %> <div>Field 1: <%= Html.TextBox("field1") %></div> <div>Field 2: <%= Html.TextBox("field2") %></div> <div>Field 3: <%= Html.TextBox("field3") %></div> <button id="btnUpload" type="button">Upload</button> <% } %> 这是控制器代码: [HandleError] public class HomeController : Controller { public ActionResult Index() { return View(); } public JsonResult SaveFile(string field1,string field2,string field3) { // save the data to the database or where ever int savedFileId = 1; // return the saved file id to the browser return Json(savedFileId); } public FileContentResult DownloadFile(int fileId) { // load file content from db or file system string fileContents = "field1,field2,field3"; // convert to byte array // use a different encoding if needed var encoding = new System.Text.ASCIIEncoding(); byte[] returnContent = encoding.GetBytes(fileContents); return File(returnContent,"application/CSV","test.csv"); } public ActionResult About() { return View(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用ASP.NET MVC3中的JavaScriptSerializer转义引号
- 谈谈分布式事务之三: System.Transactions事务详解[下篇]
- asp.net-mvc – ASP.NET MVC:CSS文件存在时返回302错误
- 程序集崩溃我的asp.net 4.0
- asp.net-mvc – ASP.NET MVC中的500内部服务器错误
- asp.net – 将特定文件夹映射到web.config中的HttpHandler
- 实体框架 – 使用伪造的DbContext和Autofixture以及Moq进行
- asp.net – 以编程方式将几个地址添加到谷歌地图中
- asp.net-mvc – asp.net mvc博客引擎
- Asp.Net MVC EF各版本区别
推荐文章
站长推荐
- asp.net-mvc-3 – 在ajax发布之前使用unobtrusiv
- asp.net-mvc – ASP.NET MVC 1.0中的表单输入验证
- 详解ASP.NET MVC 利用Razor引擎生成静态页
- 在ASP.Net MVC中长时间运行SQL查询的最佳实践
- asp.net-mvc – 与Ninject集成测试
- Razor页面在运行时无法在ASP.NET Core RC2中看到
- 你需要知道的这几种 asp.net core 修改默认端口的
- ASP.NET:禁用单个aspx页面的身份验证(自定义错误
- asp.net – 如何在运行时更改页面位置
- asp.net-mvc – 如何在MVC3 Razor中禁用DropDown
热点阅读