我正在使用RazorEngine评估一些JavaScript代码,但遇到了无法编译的问题。这是一个例子:

var someBarChart = d3.select("@Model.DivId").append("svg")
.attr("width", barChartWidth + barChartMargin.left + barChartMargin.right)
.attr("height", barChartHeight + barChartMargin.top + barChartMargin.bottom)
.append("g")
.attr("transform", "translate(" + barChartMargin.left + "," + barChartMargin.top + ")");


罪魁祸首是@Model.DivId周围的“”标记。
Somone可以为我指出一种评估该特定示例的方法吗?

我期望这个结果:

var someBarChart = d3.select("someDivId").append("svg")
.attr("width", barChartWidth + barChartMargin.left + barChartMargin.right)
.attr("height", barChartHeight + barChartMargin.top + barChartMargin.bottom)
.append("g")
.attr("transform", "translate(" + barChartMargin.left + "," + barChartMargin.top + ")");


另外,当我尝试评估如下内容时,它对我失败:

@Model.BarChartName.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + barChartHeight + ")")
.call(xAxis);


在这种情况下,我期望这样的结果:

someBarChart.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + barChartHeight + ")")
.call(xAxis);


就像我提到的那样,我正在使用RazorEngine及其默认配置来解码Html。我还尝试了使用var someBarChart = d3.select("@Raw(Model.Div)").append("svg")的情况,但是也无法评估。

所有的想法表示赞赏。
谢谢,

最佳答案

当您要将razor值用作javascript中的字符串时,请使用单引号而不是双引号:

d3.select('@Model.DivId')

关于javascript - .js代码的RazorEngine评估问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33554114/

10-13 05:57