mvc将viewbag keyvaluepair参数传递给javascript代码?

时间:2014-03-18 14:45:09

标签: javascript asp.net-mvc viewbag keyvaluepair

我想将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>

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

2 个答案:

答案 0 :(得分:0)

我认为你有两个问题。

  1. 您正在重新声明循环的每次迭代someStringValue
  2. 您应该将键值放在引号内。
  3. 也许您可以将值放入数组中:

    <script type="text/javascript">
    var values = [];
    @foreach (var jtcontentInfo in (List<KeyValuePair<string, string>>)ViewBag.JumpToContentInfo)
        {
            <text>values.push('@jtcontentInfo.Key');</text>
        }
    </script>
    

答案 1 :(得分:0)

您无法直接存储到JavaScript变量中;你必须记住,该值只会被打印到HTML响应中,然后在客户端收到它并且IIS已经转移到其他任务之后,然后 JS将由浏览器处理,并且变量将被设置为该值。

因此,例如,如果@jtcontentInfo.Key是&#34; Foo&#34;,则生成的JS将是:

var someStringValue = Foo;

哪个被解释为名为Foo的变量而不是字符串&#34; Foo&#34;。要修复它,你只需要用引号包装它:

var someStringValue = "@jtcontentInfo.Key";