【发布时间】:2019-04-03 13:29:37
【问题描述】:
那么问题来了,你能在 vue.js 中访问返回的 C# Tuple 变量吗?
例如,我有一个 vue.js 函数,它在刷新时调用一个 C# 操作 ('GetChartData'),它会向它返回一个 json 结果。
refreshChart: function () {
var vm = this;
$.getJSON(window.chartDataRoute, {
fromDate: (somedate),
toDate: (somedate)
}).done(function (data) {
vm.chartData = data;
});
},
因此,C# 函数的 json 结果作为 ContentResult 类型传递到 vue.js 代码中的 vm.chartData 中。这是 C# 函数:
public ContentResult GetChartData(DateTime? fromDate, DateTime? toDate)
{
var pageStats = (go away and get some data);
var chartModel = ChartHelpers.GetMainChartModel(chartPeriod, pageStats);
var json = JsonConvert.SerializeObject(chartModel, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
return new ContentResult { Content = json, ContentType = "application/json" };
}
一切都非常简单,但我需要向 vue.js 函数返回两个新字段,我真的不想参与重写 json 结果,因为结果用于超出我正在尝试做的事情的范围。
那么,我可以将函数转换为元组并传递两个额外的 int 值,然后在 vue.js 代码中访问它们吗?像这样:
public Tuple<ContentResult,int,int> GetChartData(DateTime? fromDate, DateTime? toDate)
{
var pageStats = (go away and get some data);
var totalClicks = (an int number);
var totalViews = (an int number);
var chartModel = ChartHelpers.GetMainChartModel(chartPeriod, pageStats);
var json = JsonConvert.SerializeObject(chartModel, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
// Can I return the extra data in a Tuple?
return Tuple.Create(new ContentResult { Content = json, ContentType = "application/json" }, totalClicks, totalViews);
}
但是,这破坏了 vue.js,因为我认为“数据”现在不同了,因此图表不起作用。所以我需要能够以某种方式将 ContentResult 分配给数据(就像现在一样),和两个额外的整数。
如果我不能这样做,那么我可以用另一种不涉及深度重写任何 vue.js 的方式来做吗?问题之一是我有点 vue.js 新手...
【问题讨论】:
-
否 -
ContentResult表示 HTTP 响应中返回的内容。如果您希望数据包含在 HTTP 响应中,那就是它需要去的地方。听起来您确实应该更改图表模型以包含额外的值。 -
谢谢,这是我最后的选择——我真的没有时间纠结这个! :(