2016-02-10 1 views
1

На мой взгляд У меня есть кнопка для экспорта в 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, он тоже не работает.

ответ

0

Чтобы отправить параметр, вам не нужно использовать POST.

Вместо этого, вы можете добавить параметр к GET запросу:

/AuditAddins/ExportCSV?index=2 

и по умолчанию 1, если параметр не предусмотрен.

Для отправки нескольких параметров, вы можете использовать &, чтобы отделить их:

/AuditAddins/ExportCSV?index=2&param2=123 

Это также должно решить проблему с окном загрузки.

+0

Я пробовал с: var url = "/ AuditAddins/ExportCSV? Chx = 1"; $ .get (url, null, function (data) { alert ("done"); }); Но это не работает. – mrplume

+0

@mrplume - Вы обрабатывали и обрабатывали этот параметр на стороне сервера тоже? –

+0

Да. У меня есть точки останова, и я вижу, что paramater работает, и создание csv тоже. Но я не понимаю, почему IE мало загружает всплывающее окно. – mrplume

 Смежные вопросы

  • Нет связанных вопросов^_^