2015-06-20 46 views
1

当您在MVC剃须刀视图上有一些JavaScript时,可以在多部分语句的中间执行模型变量替换。在MVC Razor中的Javascript中,用模型中的值替换关键字

为了澄清我的代码

<script> 
function drawChart() { 
    $.post('@Url.Content("~/Home/GetDataAssets")', function (d) { 
     ... 
     var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
     chart.draw(data, options); 
    }); 
}; 

在我想要显示给来自模型图表的类型。因此,图线将不得不看起来像

var chart = new [email protected](document.getElementById('chart_div')); 

LineChart已取代@Model.ChartType

这显然给了

图图表正在使用类似的方法错误

有没有办法让这个替代?

+1

没有,因为'@Model。 ChartType()'是在发送到视图之前在服务器上解析的剃须刀代码,'document.getElementById()'是客户端代码 –

+0

你可以有这样的东西 - 'if('@ Model.ChartType'== 'LineChart'){... var chart = ...} else {...}' – ramiramilu

回答

3

作为@史蒂芬 - muecke所述剃刀代码在服务器侧客户端 JavaScript代码解析。

如果Model.ChartType返回一个字符串,即LineChart,你只需要输出paranthesis和它(...)作为文本内容。

要做到这一点,你必须添加@{<text> ... </text>}输出纯文本,如下面

var chart = new [email protected]@{<text>(document.getElementById('chart_div'));</text>} 

客户端的结果将是,与我的例子

var chart = new google.visualization.LineChart(document.getElementById('chart_div'));