我编写了一个操作,允许用户将文本导出为.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");
}