Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中构建JavaScript数组,撇号更改_Javascript_C#_Asp.net Mvc - Fatal编程技术网

在C#中构建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(

我这样做是为了从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;
    }
公共字符串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单独解决了我的问题。当然,您的答案是完全正确的。