.js代码中的RazorEngine评估问题

RazorEngine evaluation issue with .js code

本文关键字:评估 问题 RazorEngine 代码 js      更新时间:2023-09-26

我正在使用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周围的"标记。有人能给我指一种方法来评价那个特定的例子吗?

我期待这个结果:

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")的案例,但也未能进行评估。

感谢所有的想法。谢谢你,

当您想在javascript:中将剃刀值用作字符串时,请使用单引号,而不是双引号

d3.select('@Model.DivId')

@Robert McKee

事实上,我能够使用以下语法来解决它:

var @Model.DivName = d3.select("@(Model.DivId)").append("svg")

这是正确的评估。谢谢你的建议。