我正在尝试使用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);
}
我尝试了几个不同的版本,但返回的代码永远不会达到警报(值);码。 我错过了什么?
答案 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]);
});
}