【问题标题】:RazorEngine evaluation issue with .js code.js 代码的 RazorEngine 评估问题
【发布时间】:2015-11-05 20:25:27
【问题描述】:

我正在使用 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") 的案例,但也无法评估。

感谢所有想法。 谢谢,

【问题讨论】:

  • 通常我过去所做的是将除法呈现为您需要的任何数据属性,然后通过 $(this).data('divid') 在 javascript 中引用它或一些这样的。这样,您也可以将 javascript 从视图中移出到它自己的文件中。

标签: javascript c# razor d3.js razorengine


【解决方案1】:

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

d3.select('@Model.DivId')

【讨论】:

    【解决方案2】:

    @罗伯特·麦基

    我实际上能够使用以下语法解决它:

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 2018-11-05
      • 2013-11-04
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      相关资源
      最近更新 更多