使用C#填充JavaScript数组

5
我该如何在后台代码中使用C#填充在JavaScript中定义的数组?
编辑:
这是我的代码。
protected void Page_Load(object sender, System.EventArgs e)
{
string[] locations = new string[] {
    "Las Vegas",
    "Los Angeles",
    "Tampa",
    "New York",
    "s",
    "sss"
};
string jsArray = GetJSArrayForVBArray(locations);
this.ClientScript.RegisterArrayDeclaration("usernames", jsArray);
}

private string GetJSArrayForVBArray(string[] vbArray)
{
StringBuilder myResult = new StringBuilder();
foreach (string item in Constants.vbArray) {
    {
        myResult.Append(",'" + item + "'");
    }
}
if ((myResult.Length > 0)) {
    return myResult.ToString().Substring(1);
} else {
    return "";
}
}

JavaScript:

<script type="text/javascript">
    $(function () {
        var usernames = new Array();
        $("#tags").autocomplete({
            source: usernames
        });
    });
</script>

生成一个 JavaScript 代码块来执行它:someArray.push(someValue) - Jaroslav Jandek
另外,请检查一下您是否可以接受一些关于您之前问题的答案。提出问题后不回来查看是很不礼貌的行为。 - Tomalak
语法高亮器有什么问题吗? @tomalak ??????????? @Jaroslav Jandek:谢谢。给我一个更多信息或示例的链接。 @oded 已编辑 - Shahin
@shaahin:我认为没有更简单的词来解释它。如果你不理解,请再读一遍我的评论。 - Tomalak
@Tomalak:我已经做了。 谢谢你的建议 :)。 - Shahin
@shaahin:已经好多了。 :) - Tomalak
2个回答

5

使用JavaScriptSerializer类。以下内容应该可以解决问题:

protected void Page_Load(object sender, System.EventArgs e)
{
    string[] locations = new string[] {
        "Las Vegas",
        "Los Angeles",
        "Tampa",
        "New York",
        "s",
        "sss"
    };

    JavaScriptSerializer serializer = new JavaScriptSerializer();

    string jsArray = serializer.Serialize(locations);
    this.ClientScript.RegisterClientScriptBlock(this.GetType(), "locations", jsArray, true);
}

非常感谢。 我该如何在我的aspx页面中使用它? - Shahin
我无法在aspx页面中使用数组。 请帮帮我。 我使用了以下代码。<script type="text/javascript"> $(function () { var locations= new Array(); $("#tags").autocomplete({ source: locations }); }); </script> - Shahin
1
@shaahin - 我的代码输出到页面上是什么?我们不需要声明一个新的JavaScript数组来保存我们从服务器端输出的值,我们只需要将我们输出的内容分配给一个变量,然后将该变量的值分配给您传递给自动完成的对象的源属性即可。 - Russ Cam
1
或者,您可以直接将调用序列化的结果写入到aspx标记中,使用<%= ... %>标记。 - Russ Cam

4
听起来需要使用JSON。请注意,如果您在该页面上向下滚动,您将看到许多有关在C#中利用JSON的资源。这是一种在各种平台/语言之间传输数据的好方法。

1
好吧,看看页面上列出的链接。根据您的实现方式,其中一个包将为您完成大部分“转换”工作。具体来说,基本上只需要调用JsonEncode/JsonDecode(或使用帮助函数处理特定的集合类型),代码可参考:http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html - Jeffrey Blake

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