2013-12-12 18 views
0

我要去通過教程CSV/TSV文件D3的示例代碼(下面)示出了相對於文件名,"data.tsv",所述數據文件的要被傳遞到D3功能。不過,我需要通過MVC控制器傳遞此文件。我怎樣才能做到這一點?在<a href="http://bost.ocks.org/mike/bar/2/" rel="nofollow">http://bost.ocks.org/mike/bar/2/</a></p> <p>傳遞使用MVC

d3.tsv("data.tsv", type, function(error, data) {...

什麼將是一個很大的幫助,謝謝。

更新:

"data.tsv" and "data.json"路線是一個半身像。我嘗試了兩天,從MVC控制器發送數據到d3方法工作,但我無法得到它正確綁定。

但是我用jQuery.ajax從服務器獲取數據(json)並且第一次工作。 :)

+0

請您詳細說明一下嗎? MVC控制器是什麼意思?數據來自文件還是動態生成? –

+0

如果可能,可以動態生成數據,但如果這不可能,則可能來自文件。 – Slouch

+0

好的,你可以在第一個參數中指定數據將被生成的URL。 –

回答

0

確保您的「data.tsv」文件存儲在assets文件夾中。由於d3是客​​戶端庫,因此必須公開數據文件以供d3訪問(並將其放置在資產中以使其公開)。

下面是關於資產的一些信息:http://sailsjs.org/#!documentation/assets

2

試圖弄明白如何將文件(CSV,TSV或JSON)傳遞給d3.js圖,我發現this source後。

基本上你需要在你的控制器創建一個新方法像這樣:

[HttpGet]  
public ActionResult GetCSV() 
    { 
     FileInfo file = new FileInfo(Path.Combine(HostingEnvironment.ApplicationPhysicalPath, @"data.csv")); 
     return File(file.Open(FileMode.Open, FileAccess.Read), "text/csv", "data.csv"); 
    } 

在第一行中添加正確的路徑,所以F.E.如果你的文件,你想加載是在項目文件夾中的文件夾「內容」,那麼第一行必須是

FileInfo(Path.Combine(HostingEnvironment.ApplicationPhysicalPath, @"Content/data.csv")); 

第二行需要包含正確的MIME類型(第三個參數)的名稱,而該文件(第四個參數)。在您的控制器指定在此之後,轉到視圖,並添加

d3.csv("@Url.Action("GetCSV")", type, function(error, data) {... 

在這裏,你必須爲CSV文件的示例,但它適用於TSV和JSON以同樣的方式分別d3.tsv(...)d3.json(...)

相關問題