为什么我的List <string>没有从$ ajax调用返回MVC Controller

时间:2015-12-02 16:32:04

标签: javascript c# ajax asp.net-mvc razor

我正在尝试使用ajax调用在我的cshtml文件中创建定制列表

.ajax({
        type: "GET",
        cache: false,
        url: "@Url.Action("getValidationLists")",
        contentType: "application/json",
        dataType: "json",
        success: function (result) {                
            var list = result.list;
            $.each(list, function (index, value) {
                alert(value);
            });
        }
    });       

Controller然后收集数据将其放入List并使用json格式将其返回到我的cshtml文件。控制器方法如下

[HttpGet]
[Authorize]
public JsonResult getValidationLists()
{
    List<List<String>> validList = new List<List<String>>();
    List<UIReferenceData> results = AddErrorsToModelState<List<UIReferenceData>>(_StaticDataServiceAgent.GetAllAssetTypes());
    for (int i = 0; i < results.Count; i++)
    {
        List<String> resultList = new List<String>();
        string id = results[i].ID.ToString();
        string name = results[i].Name;
        resultList.Add(id);
        resultList.Add(name);
        validList.Add(resultList);
    }
    return Json(new
    {
        validList = validList
    }, JsonRequestBehavior.AllowGet);
}

我尝试了几个不同的版本,但返回的代码永远不会达到警报(值);码。 我错过了什么?

2 个答案:

答案 0 :(得分:1)

属性名称与您从操作中返回的内容不一致:

var list = result.list;

应该是:

var list = result.validList;

但是,您返回的是List<List<String>>而不是List<String>

我认为您需要解决上述两个问题才能解决问题。

答案 1 :(得分:0)

您从操作方法返回的JSON响应如下所示

{
    "validList": [      
        ["1", "SomeText"],
        ["2", "SomeText"],
        ["3", " SomeText"]
    ]
}

您的响应具有validList属性,该属性是一个数组,并且数组中的每个项目都是另一个包含2个项目的数组。

这应该有效

 success: function (result) {           
     $.each(result.validList, function (index, value) {
       console.log(value[0]);
       console.log(value[1]);
    });
 }