使用.js代码进行RazorEngine评估问题

时间:2015-11-05 20:25:28

标签: javascript c# razor d3.js razorengine

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

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

2 个答案:

答案 0 :(得分:2)

当您想在javascript中将razor值用作字符串时,请使用单引号代替双引号:

d3.select('@Model.DivId')

答案 1 :(得分:0)

@Robert McKee

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

@Test
public void testSuppressSuperclassMethods() {
    PowerMockito.suppress(MemberMatcher.methodsDeclaredIn(Parent.class));
    Child child = spy(Child.class);
    child.method();
}

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