2011-09-02 21 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

我现在做了。谢谢 –