在C#中构建JavaScript阵列,更改撇号



我已经这样做是为了从int,double and 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字符串不同。

我假设您正在这样做将其放入某个地方的网页中,例如:

<script>
    @{
        var output = listToJsArray(Model.SomeList);
    }
    var myArray = @Html.Raw(output);
    // some Javascript using that array
</script>

不要浪费时间尝试自己做。这是一个痛苦,您正在重新发明轮子。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>

序列化器将为您处理所有令人讨厌的逃脱,特殊的角色和边缘案例。

最新更新