从Controller中通过json接收的javascript获取对象属性值作为Hashtable

时间:2012-05-07 09:00:22

标签: c# javascript jquery asp.net-mvc-3

我在这里阅读了一些如何从对象中获取属性值的主题。

就我而言,我在Controller中有一些东西:

[HttpPost]
public ActionResult GetSomething() {

return Json( new {
     data = AModel.Get()
     }, JsonRequestBehavior.AllowGet );

}

模特:

public static List<Hashtable> Get() {
    List<Hashtable> list = new List<Hashtable>( 0 );
    Hashtable table = new Hashtable();
    table.Add( "ITEM_1", "Value1" );
    table.Add( "ITEM_2", "Value 32" );
    list.Add( table );

    table = new Hashtable();
    table.Add( "ITEM_1", "Value22" );
    table.Add( "ITEM_2", "Other" );
    list.Add( table );

   return list;
}

在Javascript中:

var test;
 $.ajax({
    type: "post",
    url: "Action/Controller",
    data: {},
    dataType: "json",
    async: false,
    success: function (data) {
            test = data.data;
         },
    complete: function () {
            console.log(test);              
 });

我进入了控制台,如下图所示:

enter image description here

我想获取属性ITEM_1的值并将结果发送给我:Value1,Value22。

我试过

for(var key in test) {
console.log(test[key].ITEM_1);
//console.log(test[key].ITEM1);
}

但它不起作用。

当然,我将ITEM_1键重命名为ITEM1(在模型中)但结果相同:undefined但在控制台中我看到了所有对象的值。

enter image description here

请帮帮我。

1 个答案:

答案 0 :(得分:3)

test是一个数组,而不是一个对象。循环遍历数组,如:

var testLength = test.length;            //caching length, performance benefit
    i, item1;

for(i=0;i<testLength;i++){
    item1 = test[i].Properties.ITEM1;
}