我有一个像这样的 Controller 操作:
List<string> abcd = new List<string>()
foreach (var i in images)
{
abcd.Add("{url:'"+GetImageUrl(i)+"'}");
}
return Json(abcd, JsonRequestBehavior.AllowGet);
所以abcd
的输出是
["{url:'/PropertyImage/GetPropertyImage?imageId=1'}", "{url:'/PropertyImage/GetPropertyImage?imageId=2'}", "{url:'/PropertyImage/GetPropertyImage?imageId=8'}"]
但我想要的结果是:
images:[{url:'/PropertyImage/GetPropertyImage?imageId=1'}, {url:'/PropertyImage/GetPropertyImage?imageId=2'}, {url:'/PropertyImage/GetPropertyImage?imageId=8'}]
在我的 JavaScript 中,我有
$.ajax({
type: "GET",
url: url,
success: function (result) {
console.log(JSON.stringify(result));
var data = {
images: [result]
};
template = "{{#images}}<a href='{{url}}'><img class='imageborder' src='{{url}}' style='width:150px;height:150px'></img></a>{{/images}}";
renderedOutput= Mustache.to_html(template,data);
$('#Propertyimagelinks').html(renderedOutput);
}
});
如何获得正确的输出?
最佳答案
与尝试手动操作 JSON 字符串相比,使用 ASP.NET MVC 内置的 JSON 序列化功能和一点 Linq 似乎要简单得多,如下所示:
var abcd = images.Select(i => new { url = GetImageUrl(i) }).ToList();
return Json(abcd, JsonRequestBehavior.AllowGet);
并在 JavaScript 结果处理程序中使用:
var data = { images: result };
<小时/>
或者,您可以在 Controller 中使用它:
var abcd = images.Select(i => new { url = GetImageUrl(i) }).ToList();
return Json(new { images = abcd }, JsonRequestBehavior.AllowGet);
在你的 JavaScript 中:
var data = result;
关于c# - 更正 JSON 结果对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23790922/