【发布时间】:2017-05-05 12:55:46
【问题描述】:
我这样做是为了从 int、double 和 string 列表构建 JavaScript 数组。
public string listToJsArray<T>(List<T> cslist)
{
bool numeric = true;
if(
!(typeof(T)==typeof(int)
|| typeof(T) == typeof(string)
|| typeof(T) == typeof(double))
)
{
throw (new ArgumentException(message: "Only int, double and string are supported"));
}
if(typeof(T)==typeof(string))
{
numeric = false;
}
string JsArray = "[";
for(int i=0;i<cslist.Count;i++)
{
string dataWithSurrendings = cslist[i].ToString();
if(!numeric)
{
dataWithSurrendings = "'" + cslist[i].ToString() + "'";
}
if(i !=0)
{
dataWithSurrendings = "," + dataWithSurrendings;
}
if(i +1==cslist.Count)
{
dataWithSurrendings = dataWithSurrendings + "]";
}
JsArray += dataWithSurrendings;
}
return JsArray;
}
我的问题是当传递一个字符串列表时,撇号变成&#39;。
例如,{"1","2","3","4","5","6","7"} 的列表变为:
[&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;1&#39;,&#39;6&#39;,&#39;7&#39;]
这个函数需要做哪些修改,才能在 JavaScript 中返回正确的数组?
没有一个解决方案能解决问题。使用 JsonConvert 我得到几乎相同的结果。问题是视图编辑器中的单引号或双引号与 CS 字符串的编码不同。
【问题讨论】:
-
为什么不直接使用JSON呢?
-
不要 - 带你原始集合并将其序列化为 JSON。现在你有了 Javascript 数组。 JSON 是 Javascript 的子集,因此如果您输出类似
"var myArray = " + JsonConvert.SerializeObject(csList) + ";"的内容,您将得到所需的内容 -
@George:JSON 是 Javascript 的子集。任何放入
<script>标记的 JSON 都是有效的 Javascript。它甚至不需要解析。
标签: javascript c# asp.net-mvc