用c#代码动态创建javascript数组

Dynamically create javascript array with c# code behind

本文关键字:javascript 数组 创建 动态 代码      更新时间:2023-09-26

我正在更新一个旧的经典ASP网站到新的。net 3.5版本。该页面有一个客户端(我的老板)想要保留的自定义列表控件。这个列表控件需要几个数组才能正常工作。该数组是出版物的多维列表。它看起来是这样的:

var publicationTable = [
    [31422,"Abilene Reporter News","Abilene","TX",false,"D",0],
    [313844,"Acadiana Weekly","Opelousas","LA",false,"W",1],
    [527825,"Action Advertiser","Fond du Lac","WI",false,"W",2]...n]

我想在服务器端生成这个数组并注册它。我已经看过msdn了,但这有点琐碎。概念上的问题是,数组是字符串和整数的混合物,我不确定如何重新创建它,所以如何?

你应该这样做:

背后的代码:

using System.Web.Script.Serialization;
...
public string getJson(){
   var publicationTable = new List<object>{
      new []{ 31422,"Abilene Reporter News","Abilene","TX",false,"D",0},
      new []{ 313844,"Acadiana Weekly","Opelousas","LA",false,"W",1 },
      new []{ 527825,"Action Advertiser","Fond du Lac","WI",false,"W",2}
   };
   return (new JavaScriptSerializer()).Serialize(publicationTable);
}

如你所见,为了创建一个混合类型的数组,我们创建了一个匿名类型的数组new []。你也可以用new object[]来做。

Aspx文件:

<script>
    var publicationTable = <%= getJson() %>;
</script>

希望这对你有帮助。欢呼声

我认为一个List<List<object>>包含您的项目,通过JavaScriptSerializer将做的把戏。考虑到这些数据可能来自更结构化的数据类型,您可能比List<List<object>>做得更好,但JavaScriptSerializer可能是您所追求的。

这样行吗?

ArrayList list = new ArrayList{31422,"Abilene Reporter News","Abilene","TX",false,"D",0};
var str = string.Format("[{0}]", list.Cast<object>().Select(x => (x is string)?
          string.Format(@"""{0}""", x) : x.ToString())
          .Aggregate((x, y) => string.Format("{0}, {1}", x, y)));

可以以类似的方式扩展为多维数组