将字符串传递给剃须刀中的 javascript 函数

Passing string to javascript function in razor

我将 3 个参数从剃刀代码传递给 javascript 函数,前两个参数正确传递但第三个参数从未传递 - 前两个是 int/numbers 但最后一个是一个字符串

这个很好用

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>
}

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

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

希望它有效..

如果您想要更健壮的实现,您可以从 razor 生成一个 json 对象,而不是传递单个参数。如果您要传递布尔值 and/or 字符串,这将特别方便。没有必要引用或解释你的剃刀变量,因为 Json.Encode 会处理这个。

为了生成对象试试这个:

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

Json.Encode 将 AnonymousType 从 razor 转换为 json。 @Html.Raw 防止标记编码。

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