2015-11-05 43 views
0

我正在使用RazorEngine評估一些JavaScript代碼,並遇到無法編譯的問題。這裏有一個例子:RazorEngine評估問題.js代碼

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")的案例,但是也沒有評估。

所有的想法表示讚賞。 謝謝

+0

通常我過去所做的是將divid呈現爲任何需要的數據屬性,然後通過$(this).data('divid')或其他方式在javascript中引用它。這樣,您也可以將JavaScript從視圖中移出到它自己的文件中。 –

回答

2

代替雙引號的,當你想使用剃刀值在JavaScript字符串中使用單引號:

d3.select('@Model.DivId') 
0

@Robert麥基

實際上,我是能夠解決它使用以下語法:

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

這是正確評估。不過謝謝你的建議。