I need to export text data to csv in MVC3. I do the following:
VIEW:
$(".export").click(function() {
$.get("@Url.Action("Export","Log")");
});
CONTROLLER:
public ActionResult Export()
{
var sb = new StringBuilder();
var list = this.systemLogRepository.GetFilterList(
null, this.ControllerContext.RequestContext.HttpContext.Request.QueryString, null);
foreach (var item in list)
{
sb.AppendFormat(
"{0},{1},{2},{3},{4}", item.Machine.Name, item.PackageID, item.ErrorDescription, item.OccurenceTime, Environment.NewLine);
}
return this.File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", string.Format("Log-{0}.csv", DateTime.Now.ToString("g").Replace("/","-").Replace(":","_").Replace(" ", "-")));
}
This returns the content but does not pop up a window with Save As and Open options ?? thanks
Don't use AJAX to download a file. Use a normal link or a button:
@Html.ActionLink("export to CSV", "Export", "Log")
Now you could get rid of the javascript bit. The reason you cannot use AJAX to download files is because the content will indeed be transferred to the client but you cannot open a Save As dialog from javascript.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With