在JavaScript中获取c#列表

Get C# List in JavaScript

本文关键字:列表 获取 JavaScript      更新时间:2023-09-26

我在c#代码中创建了一个列表,并试图将其发送给JavaScript函数:

.aspx.cs代码:

List<SomeObject> data = whatever.getList();
ClientScript.RegisterStartupScript(GetType(), "hwa", "test('" + data + "');", true);

. js:

function test(data) {

我的JavaScript函数中的data变量是一个字符串,如:

"System.Collections.Generic.List`1[SomeObject]"

我如何将这个变量从我的aspx页面传递到我的。js文件并读取里面的内容?

如果你想传递,将其转换为json:

var jsonSerialiser = new JavaScriptSerializer();
ClientScript.RegisterStartupScript(GetType(), "hwa", "test('" + jsonSerialiser.Serialize(data)+ "');", true);

当你调用RegisterStartupScript方法时。net执行数据变量ToString()方法并渲染javascript到页面。List<SomeObject>.ToString()方法的结果返回"System.Collections.Generic.List 1[SomeObject]" ',所以你不能在javasciprt中使用变量

ClientScript.RegisterStartupScript(GetType(), "hwa", "test('" + data + "');", true);

你必须像这样将你的List序列化为json List,然后传递给RegisterStartupScript

Javascript不知道什么是list<T>。您必须将其转换为JSON。因为javascript只有recognizes JSON

我首先想到的是使用JSON模板

将列表转换为JSON数组,像这样(伪代码,是c#吗??)

var json = "[";
foreach(elem in data) {
  json += "'" + elem.toString() + "', ";
}
json += "]";
在代码中添加json而不是数据。