2017-03-14 39 views
0

我从剃须刀代码传递3个参数给JavaScript函数,前两个正确传递,但第三个传递从不传递 - 前两个是int /数字,但最后一个是串在剃须刀中传递字符串到JavaScript函数

这工作得很好

if (geResult.ResultValue != null) { 
    var val = "A!"; 
    <script>{ getPosition(@geResult.assessmentId, @index, "A!"); }</script> 
} 

这亘古不变的工作

if (geResult.ResultValue != null) { 
    var val = "A!"; 
    <script>{ getPosition(@geResult.assessmentId, @index, @val); }</script> 
} 

回答

2

试试这个 - 只需添加单引号

if (geResult.ResultValue != null) { 
<script>{ getPosition('@geResult.assessmentId', '@index', '@val'); }</script> 
} 

希望工程..

+0

太棒了!所以它是单引号! – Samra

+0

它工作吗?那么你能接受我的答案吗? –

1

如果您想更稳健的实现,你可以生成从剃须刀,而不是通过单一参数的JSON对象。如果你传递布尔值和/或字符串,这特别方便。自从Json.Encode处理这个问题以后,不需要引用或解释你的剃刀变量。

为了生成对象尝试:

var parameters = JSON.parse('@Html.Raw(Json.Encode(new { assessmentId = geResult.assessmentId, index = index, value = val }))'); 

Json.Encode从剃刀转换一个AnonymousType到JSON。 @ Html.Raw防止标记的编码。

结果是呈现为客户端使用的字符串的json对象。当客户端使用JSON.parse()解析文本或者如果您使用jQuery使用jQuery.parseJSON(),则结果是包含您的剃须刀参数的对象。