一尘不染

将C#ASP.NET数组传递给Javascript数组

c#

有谁知道如何将C#ASP.NET数组传递给JavaScript数组?示例代码也将很好。

抱歉,如果我以前的人含糊不清。这个问题实际上很简单。为了简单起见,我在aspx.cs文件中声明:

int [] numbers = new int[5];

现在,我想传递numbers给客户端,并在JavaScript中使用数组中的数据。我该怎么做?


阅读 362

收藏
2020-05-19

共1个答案

一尘不染

您可以使用ClientScript.RegisterStartUpScript将javascript注入Page_Load的页面中。

这是MSDN参考的链接:http :
//msdn.microsoft.com/zh-
cn/library/asz8zsxy.aspx

这是Page_Load中的代码:

  List<string> tempString = new List<string>();
  tempString.Add("Hello");
  tempString.Add("World");

  StringBuilder sb = new StringBuilder();
  sb.Append("<script>");
  sb.Append("var testArray = new Array;");
  foreach(string str in tempString)
  {
    sb.Append("testArray.push('" + str + "');");
  }
  sb.Append("</script>");

  ClientScript.RegisterStartupScript(this.GetType(), "TestArrayScript", sb.ToString());

注意:使用StringBuilder生成脚本字符串可能会很长。

以下是在使用注入数组之前对其进行检查的Javascript:

if (testArray)
{
  // do something with testArray
}

这里有两个问题:

  1. 有人认为这对C#注入Java脚本是一种干扰

  2. 我们必须在全局上下文中声明数组

如果不能接受,另一种方法是让C#代码将数组保存到View
State,然后让JavaScript使用PageMethods(或Web服务)回调到服务器以将该View
State对象作为数组。但是我认为对于这样的事情可能会过大。

2020-05-19