C#字符串数组转换为JS数组

3

我希望在razor语法的JS插件中使用C#字符串数组。

C# 代码:(在cshtml中)

@{
    string[] extentions = new string[] { "jpg", "png", "gif", "jpeg", "pdf" };
}

JS代码:

  $('#file').filer({
        limit: 2,
        maxSize: 4000,
        extensions: ["jpg", "png", "gif", "jpeg", "pdf"],
        ...
  })

使用C#字符串数组编写JS代码:

  $('#file').filer({
        limit: 2,
        maxSize: 4000,
        extensions: '@extentions',
        ...
  })

在这种情况下,我得到了 System.String[],如果我使用 JsonConvert.SerializeObject(extentions),我会得到类似于以下的内容:
["jpg","png","gif","jpeg","pdf"]

什么是将C#字符串数组转换为我想要的格式的Js数组的最佳方法?

1
如果C#数组不是来自服务器,为什么不使用普通的JavaScript数组呢? - amir mishori
@amirmishori 可能在服务器端的某个视图中还使用了服务器版本。 - pwas
2个回答

6

使用

@Html.Raw(JsonConvert.SerializeObject(extentions))

Html.Raw 确保其参数不会被 HTML 编码,因此你将不再得到 " 而是真正的 "


0
@{
    <text>[</text>
    foreach (string extension in extensions)
    {
        <text>"@extension", </text>
    }
    <text>]</text>
}

上述代码将产生以下输出:

["jpg", "png", "gif", "jpeg", "pdf", ]

这是通过使用<text></text>标签来完成的,该标签允许您在标签之间插入标记以在视图中显示。

首先,插入一个[字符。然后,循环遍历每个扩展名并输出"extension",。循环完成后,插入一个]字符以结束有效的JavaScript数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接