在C#中构建JavaScript数组,撇号更改
我这样做是为了从int、double和string列表构建JavaScript数组在C#中构建JavaScript数组,撇号更改,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我这样做是为了从int、double和string列表构建JavaScript数组 public string listToJsArray<T>(List<T> cslist) { bool numeric = true; if( !(typeof(T)==typeof(int) || typeof(T) == typeof(string) || typeof(
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;
}
公共字符串listToJsArray(列表cslist)
{
布尔数值=真;
如果(
!(typeof(T)=typeof(int)
||typeof(T)=typeof(字符串)
||类型(T)=类型(双)
)
{
抛出(新ArgumentException(消息:“仅支持int、double和string”);
}
if(typeof(T)=typeof(string))
{
数字=假;
}
字符串JsArray=“[”;
对于(int i=0;i我假设您这样做是为了进入某个网页,比如:
<script>
@{
var output = listToJsArray(Model.SomeList);
}
var myArray = @Html.Raw(output);
// some Javascript using that array
</script>
@{
var输出=listToJsArray(Model.SomeList);
}
var myArray=@Html.Raw(输出);
//一些Javascript使用该数组
不要浪费时间自己尝试。这很痛苦,你正在重新发明轮子。JSON是有效的Javascript,将数组序列化为JSON与Javascript数组文本完全相同。因此,在这里使用Javascript.JSON.Net非常有用:
<script>
@{
var output = Newtonsoft.Json.JsonConvert.SerializeObject(Model.SomeList);
}
var myArray = @Html.Raw(output);
// some Javascript using that array
</script>
@{
var output=Newtonsoft.Json.JsonConvert.SerializeObject(Model.SomeList);
}
var myArray=@Html.Raw(输出);
//一些Javascript使用该数组
序列化程序将为您处理所有恼人的转义、特殊字符和边缘情况。为什么不改用?特别是,不要-将原始集合序列化为JSON。现在您拥有了Javascript数组。JSON是Javascript的子集,因此如果您输出类似于“var myArray=”的内容+JsonConvert.SerializeObject(csList)+“;”
您将获得所需的@George:JSON的可能副本是Javascript的子集。放入
标记中的任何JSON都是有效的Javascript。它甚至不需要解析。@Html.Raw单独解决了我的问题。当然,您的答案是完全正确的。