На мой взгляд У меня есть кнопка для экспорта в CSV текущего представления данных. Это простая ссылка на метод в контроллере.Как передать параметр в метод экспорта CSV в MVC-контроллере с помощью JQuery/Ajax
<input type="button" value="Exporter" id="btnexport" class="btnsearch" onclick="location.href='@Url.Action("ExportCSV", "AuditAddins")'" />
И метод контроллера
public void ExportCSV()
{
auditAddins = AddinsCache.AuditAddinsCache;
var sw = new StringWriter();
sw.WriteLine(String.Format("{0};{1};{2};{3};{4}", "Date", "AddinName", "IsAddinActive", "UserName", "PcName"));
foreach (var record in auditAddins)
{
sw.WriteLine(String.Format("{0};{1};{2};{3};{4}", record.Date, record.AddinList.AddinName, record.IsAddinActive, record.Users.UserName, record.Pc.PcName));
}
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=Export.csv");
Response.ContentType = "text/csv";
Response.Write(sw);
Response.End();
}
Это хорошо работает. Но мне нужно отправить параметр этому методу, потому что у меня есть три режима проектирования, и каждый из них имеет свой собственный порядок столбцов. Поэтому я создал сценарий jquery/ajax для отправки paramater.
$("#btnexport").click(function() {
var index = $('#CritID').find('option:selected').val();
var d = { chx: index}
$.ajax({
url: "/AuditAddins/ExportCSV",
type: "POST",
data: d,
success: function (data) {
alert("Export ok !");
},
});
});
Основная цель состоит в том, чтобы изменить метод экспорта так:
public void ExportCSV(int chx)
{
...
switch (chx)
{
case 1:
sw.WriteLine(String.Format("{0};{1};{2};{3};{4}", "Date", "AddinName", "IsAddinActive", "UserName", "PcName"));
break;
case 2:
sw.WriteLine(String.Format("{0};{1};{2};{3};{4}", "Date", "UserName", "PcName","AddinName", "IsAddinActive"));
break;
...
}
Проблема заключается в том, что у меня нет IE скачать окно больше. Я попробовал метод actionresult, он тоже не работает.
Я пробовал с: var url = "/ AuditAddins/ExportCSV? Chx = 1"; $ .get (url, null, function (data) { alert ("done"); }); Но это не работает. – mrplume
@mrplume - Вы обрабатывали и обрабатывали этот параметр на стороне сервера тоже? –
Да. У меня есть точки останова, и я вижу, что paramater работает, и создание csv тоже. Но я не понимаю, почему IE мало загружает всплывающее окно. – mrplume