我正在浏览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)并且第一次工作。 :)
答案 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