2012-04-25 134 views
0

我是新來的MVC,並試圖找出一個辦法做到以下:轉換爲CSV?

基本上,我有一個URL http://dev.test.com/api/data/abczyz12345,點擊它時,/從UI開出了結果:

"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 2012-04-25 19:35:23

回答

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 2012-04-25 20:03:04

+0

是的,在控制器將工作。儘管Response.Write必須更好。我會再編輯我的回覆。 – Mark 2012-04-25 20:41:57