0

我想将 viewbag - keyvaluepair 数据传递给 javascript 代码。

我尝试了下面的代码;

<script type="text/javascript">

@foreach (var jtcontentInfo in (List<KeyValuePair<string, string>>)ViewBag.JumpToContentInfo)
    {
        var someStringValue = @jtcontentInfo.Key;   // It works but I cant read it from javascript.
    }

</script>

最好的处理方式是什么?任何帮助将不胜感激。

4

2 回答 2

0

我认为你在这里有两个问题。

  1. 您正在重新声明someStringValue循环的每次迭代。
  2. 您可能应该将键值放在引号内。

也许您可以将值放入数组中:

<script type="text/javascript">
var values = [];
@foreach (var jtcontentInfo in (List<KeyValuePair<string, string>>)ViewBag.JumpToContentInfo)
    {
        <text>values.push('@jtcontentInfo.Key');</text>
    }
</script>
于 2014-03-18T14:48:58.650 回答
0

您不能直接存储到 JavaScript 变量中;您必须记住,该值仅会打印到 HTML 响应中,然后在客户端接收到它并且 IIS 开始执行其他任务,浏览器将处理 JS,并将变量设置为那个值。

因此,例如,如果@jtcontentInfo.Key是“Foo”,则生成的 JS 将是:

var someStringValue = Foo;

这将被解释为一个名为Foo而不是字符串“Foo”的变量。要修复它,您只需用引号括起来:

var someStringValue = "@jtcontentInfo.Key";
于 2014-03-18T14:50:07.653 回答