我正在使用Asp.net MVC并且在控制器中我有一个生成数组列表的函数,即List,在将其转换为视图后,我将其返回到视图页面。在视图页面中,我正在转换它按以下代码列出:
<% List<string[]> items = (List<string[]>)ViewData["Items"]; %>
现在我想在javascript中使用for / foreach语句逐个访问属于列表的每个数组中的元素。我正在尝试以下代码:
var j;
for(j=0;j<'<%=items.Count%>';j++)
{
alert('<%=items['+j+'].GetValue(0).ToString()%>');
..........
}
但是,我收到错误:“字符文字中的字符过多”。如果我使用以下代码,那么它工作正常:
alert('<%=items[0].GetValue(0).ToString()%>');
但是我想动态地使用它。有没有办法做这个操作?请帮帮我。谢谢。 ARKA
答案 0 :(得分:2)
您需要将服务器端列表对象序列化为javascript数组:
序列化对象的示例C#函数:
protected string SerializeToJson(List<string[]> list) {
if ( list != null && list.Count > 0 ) {
var stream = new MemoryStream();
var jsSerializer = new DataContractJsonSerializer(list.GetType());
jsSerializer.WriteObject(stream, list);
return Encoding.UTF8.GetString(stream.ToArray());
}
return string.Empty;
}
用法示例(内联调用C#JSON序列化函数的JavaScript):
// the following call will return JSON array [["a","b"]]
var arrayFromServer = <%= SerializeToJson(new List<string[]> { new [] {"a", "b"}};) %>;
这是你要求的吗?
答案 1 :(得分:0)
在此方案中,您只能在服务器端处理列表中的元素。