Tôi đang cố gắng xuất danh sách sang tệp CSV. Tôi đã làm cho tất cả hoạt động cho đến thời điểm tôi muốn ghi vào tệp vào luồng phản hồi. Điều này không làm bất cứ điều gì.
Đây là mã của tôi:
Gọi phương thức từ trang.
$('#btn_export').click(function () {
$.post('NewsLetter/Export');
});
Mã trong bộ điều khiển như sau:
[HttpPost]
public void Export()
{
try
{
var filter = Session[FilterSessionKey] != null ? Session[FilterSessionKey] as SubscriberFilter : new SubscriberFilter();
var predicate = _subscriberService.BuildPredicate(filter);
var compiledPredicate = predicate.Compile();
var filterRecords = _subscriberService.GetSubscribersInGroup().Where(x => !x.IsDeleted).AsEnumerable().Where(compiledPredicate).GroupBy(s => s.Subscriber.EmailAddress).OrderBy(x => x.Key);
ExportAsCSV(filterRecords);
}
catch (Exception exception)
{
Logger.WriteLog(LogLevel.Error, exception);
}
}
private void ExportAsCSV(IEnumerable<IGrouping<String, SubscriberInGroup>> filterRecords)
{
var sw = new StringWriter();
//write the header
sw.WriteLine(String.Format("{0},{1},{2},{3}", CMSMessages.EmailAddress, CMSMessages.Gender, CMSMessages.FirstName, CMSMessages.LastName));
//write every subscriber to the file
var resourceManager = new ResourceManager(typeof(CMSMessages));
foreach (var record in filterRecords.Select(x => x.First().Subscriber))
{
sw.WriteLine(String.Format("{0},{1},{2},{3}", record.EmailAddress, record.Gender.HasValue ? resourceManager.GetString(record.Gender.ToString()) : "", record.FirstName, record.LastName));
}
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=adressenbestand.csv");
Response.ContentType = "text/csv";
Response.Write(sw);
Response.End();
}
Nhưng sau khi Response.Write(sw)
không có gì xảy ra. Có thể lưu một tập tin theo cách này không?
Trân trọng
Chỉnh sửa
Các tiêu đề phản hồi tôi thấy khi nhấp vào nút là:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/csv; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 2.0
Content-Disposition: attachment; filename=adressenbestand.csv
X-Powered-By: ASP.NET
Date: Wed, 12 Jan 2011 13:05:42 GMT
Content-Length: 113
Điều đó có vẻ ổn với tôi ..
Chỉnh sửa
Tôi đã loại bỏ phần jQuery và thay thế nó bằng một siêu liên kết và điều này hiện đang hoạt động tốt đối với tôi:
<a class="export" href="NewsLetter/Export">exporteren</a>