2010-05-10 33 views
0

我有ArrayList在我的模型,并希望通过它在JavaScript中迭代。我使用下面的代码,但它给我的错误:CS0103:名称“我”不会在目前情况下在Javascript中访问ArrayList - ASP.Net MVC2

for(var i=0; i <= <%=Model.KeyList.Count%>; i++) 
{ 
    alert('<%=Model.KeyList[i]%>');  
} 

如何解决这个问题存在吗?

回答

0

该代码不起作用。该foreach在客户端进行评估,并且<%...%>指令在服务器上进行评估。出于这个原因,“我”不存在,它只存在于客户端的浏览器上。

1

这是行不通的。 c#代码在执行javascript代码之前在服务器端执行,因此执行c#代码时变量i不存在。我不能告诉你如何解决这个问题,因为你不说你想做什么。但是你以太需要在c#循环中迭代列表服务器端,或者在js循环中迭代客户端。你不能将它们混合在一起。

0

如果你想使用JS解析列表,你需要将它转换为一个JavaScript数组。您需要生成的最终结果是{}表示法中的对象集合(如{ name: "a", value: "b" }),并用[]包装。

因此,您需要生成此客户端代码并将其解析到客户端,或者将其取消并在服务器上处理它。或者,创建一个返回JsonResult并返回数组的操作结果; MVC框架应该会自动转换为你;你必须通过AJAX通过JavaScript请求。

HTH。