2012-04-25 2 views
0

Я новичок в MVC и пытаюсь выяснить способ сделать ниже:Конвертировать в CSV?

В принципе, у меня есть URL http://dev.test.com/api/data/abczyz12345, который при нажатии/открыт из пользовательского интерфейса показывают результаты, как:

"email","f_name","l_name","c_name","ids" "[email protected]","C G","Wander","C1","" "[email protected]","Virginia","Dale","A & D","" .... and so on.... 

По моему мнению, я показываю указанную ссылку как привязку и когда пользователь нажимает на нее - она ​​открывается на той же странице. Есть ли способ, когда пользователь нажимает на ссылку - вместо того, чтобы открывать его на веб-странице, он открывается как файл CSV (предоставляя пользователю возможность загрузки)?

+2

http://stackoverflow.com/questions/989927/recommended-way-to-create-an-actionresult-with-a-file-extension – Shyju

ответ

1

Да, вы должны указать, какой тип файла он использует, используя заголовки HTTP. Вот пример использования PHP:

header('Content-type: application/csv'); 
header('Content-Disposition: attachment; filename="filename.csv"'); 

echo '"email","f_name"... 

браузер распознает вывод как CSV и реагировать соответствующим образом, скорее всего, с загрузкой файла запросом.

То же самое касается ASP.net, но я не уверен, как это делается.

0

Есть несколько способов справиться с этим, и я не совсем уверен в вашей целевой аудитории, окружающей среде и ваших чрезмерных целях для этих данных.

Я пойду с маршрутом кухонной раковины (вы можете использовать данные на странице и позволяют ей экспортировать в файл):

Вы можете использовать JQuery, чтобы обернуть данные в файл для загрузки.

В этом руководстве используется PHP на стороне сервера, но если я правильно понимаю ваши требования, вы должны обрабатывать эти данные, как только это на стороне клиента:

http://tutorialzine.com/2011/05/generating-files-javascript-php/

Смотрите раздел: активов/сценарий. JS

Выдержка:

$(document).ready(function(){ 

    $('#download').click(function(e){ 

     $.generateFile({ 
      filename : 'export.txt', 
      content  : $('textarea').val(), 
      script  : 'download.php' 
     }); 

     e.preventDefault(); 
    }); 

    $('#downloadPage').click(function(e){ 

     $.generateFile({ 
      filename : 'page.html', 
      content  : $('html').html(), 
      script  : 'download.php' 
     }); 

     e.preventDefault(); 
    }); 

}); 

Неплохой маленький пример для динамической генерации объявления ocument.

1
public ActionResult Index() 
{ 
    Response.Clear(); 
    Response.Clear(); 
    Response.ContentType = "application/CSV"; 
    Response.AddHeader("content-disposition", "attachment; filename=\"filename.csv\""); 
    String temp = "email,f_name,l_name,c_name,ids,[email protected],CG,Wander,C1,[email protected],Virginia,Dale,A & D"; 
    Response.Write(temp); 
    Response.End(); 
    return View(); 
} 
+0

Должен ли я использовать приведенный выше код в действии контроллера? Извините, я очень новичок в mvc. – dotNetNewbie

+0

Да, в контроллере будет работать. Хотя Response.Write должен быть лучше. Я еще немного отредактирую ответ. – Mark