我想接受List作为javascript函数的参数
我从后面的代码中调用这个函数
并将一个List传递给函数。
但我得到了" System.Collections.Generic.List`1 [System.Int32]"作为函数调用时的参数值。
当调用函数时,我该怎么做才能获得列表
我的代码是:
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
List<int> num = new List<int> { 12, 13, 14, 15, 16, 17, 18 };
List<int> oddNum = num.Where(n => n % 2 == 1).ToList();
ScriptManager.RegisterStartupScript(this, GetType(), "test", "test('"+oddNum+"');", true);
}
的Default.aspx
<head runat="server">
<title></title>
<script type="text/javascript">
function test(oddNum) {
alert(oddNum);
}
</script>
</head>
答案 0 :(得分:2)
两个问题:
您依赖于List<int>#ToString
,它会为您提供类似“System.Collections.Generic.List`1 [System.Int32]”的字符串。您需要做一些事情来有效地输出列表。
您将其作为字符串传递给JavaScript函数。虽然可以工作(我们可以将它转换为JavaScript中的数组),但是没有必要;你可以直接把它作为数组传递。
在服务器上,使用string.Join
将列表转换为字符串,然后使用[
和]
代替'
:
ScriptManager.RegisterStartupScript(this, GetType(), "test", "test([" + string.Join(",",oddNum) + "]);", true);
假设我们的列表中包含1,3和5。这会调用你的函数:
test([1, 3, 5]);
然后,您的JavaScript函数会收到一个数组:
function test(oddNum) {
// Use the oddNum array
}
答案 1 :(得分:1)
尝试以下方法:
ScriptManager.RegisterStartupScript(this, GetType(), "test", "test('" + string.Join(",", oddNum) + "');", true);
String.Join(...)方法将接受一个分隔符(在这种情况下它是,
)和一个List,它将连接列表中的每个元素,使用它们分隔它们分隔符。