mvc3 ajax导出文件

时间:2012-02-09 19:09:50

标签: jquery asp.net ajax asp.net-mvc-3 export

我编写了一个操作,允许用户将文本导出为.txt文件。视图上的按钮通过ajax调用此操作。我使用了ajax,因为我希望用户在下载文本文件时保持在同一页面上。单击按钮,将执行操作。但它没有按预期工作。 ajax调用导致页面刷新,并且文件下载弹出窗口未显示。

有人可以帮我解决这个问题吗。

以下是代码段: 查看

<button id="exportButton">
<span>Export to Text</span>

@Html.HiddenFor(m => m.VersionId)
<input type="hidden" id="exportUrl" value='@Url.Content("~/LegalAgreement/_Export") ' />

<script type="text/javascript">

$(document).ready(function () {

    $("#exportButton").click(function () {

        $.ajax({
            url: $('#exportUrl').val(),
            type: 'post',
            cache: false,
            data:
        {
            id: $('#VersionId').val()
        },
            success: function () { return false; }
        }); //end ajax   

    });


});

控制器

 public ActionResult _Export(int id)
    {
       Response.AddHeader("content-disposition", "attachment; filename=fileName.txt");
        Response.ContentType = "application/octet-stream";

        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        byte[] extractedData = encoding.GetBytes("the text to be exported");

        return File(extractedData, "application/octet-stream");           
    }

感谢所有回复!

我不需要使用ajax。这是按预期工作的代码:

查看

 <a id="exportButton" href='@Url.Action("_Export",new {id = Model.VersionId})'>
        <span>Export to Text</span>
 </a> 

控制器

 public ActionResult _Export(int id)
    {

        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();          
        byte[] extractedData = encoding.GetBytes("some text");

        return File(extractedData, "application/octet-stream", "fileName.txt");

    }

0 个答案:

没有答案