使用MVC将CSV / TSV文件传递给D3

时间:2013-12-12 13:56:19

标签: javascript jquery asp.net-mvc csv d3.js

我正在浏览http://bost.ocks.org/mike/bar/2/

的教程

示例代码(下面)显示了要传递给D3函数的数据文件的相对文件名"data.tsv"。但是我需要通过MVC控制器传递此文件。我怎么能这样做?

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

任何事情都会有很大的帮助,谢谢。

更新

"data.tsv" and "data.json"路线是破产。我尝试了两天将MVC控制器发送的数据发送到d3方法,但我无法正确绑定。

但是我使用jQuery.ajax从服务器获取数据(json)并且第一次工作。 :)

2 个答案:

答案 0 :(得分:2)

在尝试弄清楚如何将文件(CSV,TSV或Json)传递到d3.js图表​​后,我找到了this source

基本上你需要在你的控制器中创建一个 new 方法,如下所示:

[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。如果您要加载的文件位于文件夹" Content"在项目文件夹中,第一行必须是

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(...)

答案 1 :(得分:0)

确保您的“data.tsv”文件存储在assets文件夹中。由于d3是一个客户端库,因此必须公开数据文件以便d3访问它(并将其放入资产使其公开)。

以下是有关资产的一些信息:http://sailsjs.org/#!documentation/assets