显示从Asp.Net MVC中的Controller返回的JSON数组数据

时间:2013-04-06 07:20:20

标签: c# asp.net-mvc json jquery asp.net-mvc-4

我的控制器中有一个动作方法;

public ActionResult IndexWithJson(int Id, int? page)
{
    int pageSize = 2;
    int pageNumber = (page ?? 1);

    using (var adsRepo = new AdvertisementRepository())
    {
        if (Id > 0)
        {
            return Json(new{
                Data = adsRepo.GetAdvertisementBySubCategoryId(Id).ToPagedList(pageNumber, pageSize)
            }, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return View("404");
        }

    }
}

浏览器中的结果输出是; enter image description here 正如您在图片中看到的那样,我将数据(在控制器中)与一个名为“Data”的对象进行包装。
现在当我使用jQuery这样调用它时;

var serviceBase = "/catalog/";

$.ajax({
    url: serviceBase + 'IndexWithJson',
    contentType: 'application/json; charset=utf-8',
    dataType:'json',
    data: { Id: categoryId, page: page },
    success: function (data) {
        alert(data.Title);
    }
});

我在警告框中看到空。
这里有什么问题?
如何在警告框中实际显示一个属性(请参阅属性图片)。
我的dataType属性是否在jQuery ajax函数中正确? (我想它应该是JSONP

3 个答案:

答案 0 :(得分:4)

试试这个:

data.Data[0].Title

这应该有效

答案 1 :(得分:0)

尝试

alert(data[0].Title)

这是一个数组。

要显示所有你可以做的事情:

$.each(data, function(index, value) {
    $('#somediv').append(value.Title);
});

答案 2 :(得分:0)

我认为您需要使用JSON.stringify发送参数(在您对控制器的ajax调用中。类似于数据:JSON.stringify({Id:categoryId,page:page}),
你是否正确地在控制器端获得Id和页面值?我认为你的ajax调用结果是null,即客户端的data = null。