2011-09-02 18 views
1

我在ASP.net寫了一些代碼: 後面的代碼:如何在JS中註冊列表<string>並重復它?

public string Locations { get; set; } 
public List<string> Categories { get; set; } 
public List<string> Hrefs { get; set; } 
public string CategoriesJ { get; set; } 
public string HrefsJ { get; set; } 

... 
    this.CategoriesJ = new JavaScriptSerializer().Serialize(Categories); 
    this.HrefsJ = new JavaScriptSerializer().Serialize(Categories); 

JS在標記:

<script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script> 
<script type="text/javascript"> 
     var Categories = jQuery.parseJSON(this.CategoriesJ); 
     var Hrefs = jQuery.parseJSON(this.HrefsJ); 
function onInit(){ 
    alert(Categories[0]); 
}; 
</script> 

那是OK的使用指數是這樣的Json變種? 這是寫作的正確方法嗎?

那麼,爲什麼我看不到警報? 背後變種的代碼等於:「餐廳」,「餐廳」] 我得到的錯誤:遺漏的類型錯誤:無法讀取屬性「0」空的

回答

0

不能在ASPX中引用服務器端變量。在ASP.NET中,您需要:

<script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script> 
<script type="text/javascript"> 
    var Categories = <%= CategoriesJ %>; 
    var Hrefs = <%= HrefsJ %>; 
function onInit(){ 
    alert(Categories[0]); 
}; 
</script> 
+0

<%=和<%和<%#之間有什麼區別? –

+1

'<%'是在頁面渲染過程中在服務器端執行的代碼塊,'<%='是相同的,但是在頁面渲染期間返回一個要寫出的塊的表達式,'<%#'是在數據綁定期間綁定到控件屬性的表達式。有一些內聯表達式文檔[這裏](http://support.microsoft.com/kb/976112)更好地解釋了代碼塊的類型。 – TheCodeKing

2

是的,這是正確的。要遍歷所有值,請使用:

for(var x=0;x<Categories.length;x++) { 
    alert(Categories[x]); 
} 
+0

我在後面的代碼中解析一個列表給Json,然後在標記中再次解析它給Json?有沒有更短的路? –

+0

它基本上是一個嵌套的JavaScript數組。如何獲取元素取決於您的JSON的結構。如果您可以通過編輯您的問題發佈樣本,我會盡力提供幫助。 –

+0

我現在做了。謝謝 –