2010-05-10 99 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。