c# - 更正 JSON 结果对象

标签 c# javascript ajax asp.net-mvc json

我有一个像这样的 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/

相关文章:

php - MYSQL如何发出多个请求

c# - 如何根据 if 条件以编程方式声明不同的 WCF 绑定(bind)类型?

javascript - 如何在不继承Controller的类中创建actionlink?

javascript - 显示 div 片刻,然后在 jquery 中切换到另一个 div

javascript - 填充表单

javascript - 用户注册时获取实时通知

c# - 在超出边界的某个步骤继续遍历数组

c# - asp.net mvc 中 JavaScriptResult 的工作示例

Javascript通过一个函数多次写表

jquery - Spin.js - 加载时禁用元素