我想使用 jsreport 在我的网站(asp.net 核心应用程序)上动态生成一些报告,并且我在控制器中有一个返回 JSON 的方法,我想使用 jsReport 从那里获取数据来填充报告。
我将发布一些测试值。 控制器
public JsonResult testReport()
{
FileStream fs = new FileStream("path\\json.txt", FileMode.Open);
using (StreamReader r = new StreamReader(fs))
{
var model = r.ReadToEnd();
test json = JsonConvert.DeserializeObject<test>(model);
return Json(json);
}
}
[HttpGet]
public async Task<IActionResult> MyAction([FromServices] INodeServices nodeServices)
{
var result = await nodeServices.InvokeAsync<byte[]>
("./pdf");
HttpContext.Response.ContentType = "application/pdf";
string filename = @"report.pdf";
HttpContext.Response.Headers.Add("x-filename", filename);
HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "x-filename");
HttpContext.Response.Body.Write(result, 0, result.Length);
return new ContentResult();
}
以及在页面上运行的实际脚本:
module.exports = function (callback) {
var jsreport = require('jsreport-core')();
jsreport.init().then(function () {
return jsreport.render({
template: {
content: 'template bla bla bla',
engine: 'jsrender',
recipe: 'phantom-pdf'
},
data: /* i don`t know how to get data from (/Home/testReport) */
}).then(function (resp) {
callback(/* error */ null, resp.content.toJSON().data);
});
}).catch(function (e) {
callback(/* error */ e, null);
});
};
我已经检查了硬编码和值并且它有效,但在动态获取数据时我遇到了问题。