ASP.NET MVC Controller FileContent ActionResult called via AJAX

前端 未结 1 1555
我寻月下人不归
我寻月下人不归 2020-12-25 09:16

The setup:

The controller contains a method public ActionResult SaveFile() which returns a FileContentResult.

1条回答
  •  有刺的猬
    2020-12-25 09:25

    Here's a quick example I made up. This is the concept LukLed was talking about with calling SaveFile but don't return file contents via ajax and instead redirect to the download.

    Here's the view code:

    
    
    
    <% using (Html.BeginForm()) { %>
    
        
    Field 1: <%= Html.TextBox("field1") %>
    Field 2: <%= Html.TextBox("field2") %>
    Field 3: <%= Html.TextBox("field3") %>
    <% } %>

    Here's the controller code:

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

    0 讨论(0)
提交回复
热议问题