0

我尝试从这里的 json 读取列表 id 我的代码:-

List<EmailProvider> list = new List<EmailProvider>();
        XmlDocument doc = new XmlDocument();
        doc.Load(Server.MapPath("~/WidgetXml.xml"));
        XmlElement root = doc.DocumentElement;
        XmlNodeList nodes = root.SelectNodes("//widget");

        foreach (XmlNode node in nodes)
        {
            EmailProvider obj = new EmailProvider();
            obj.Name = node["Name"].InnerText;
            obj.left = Convert.ToInt32(node["left"].InnerText);
            obj.Id = node["id"].InnerText;
            obj.IsVisible = Convert.ToBoolean(node["isActive"].InnerText);
            long s = Int64.Parse(node["top"].InnerText);
            obj.top = s;
            obj.desc = node["desc"].InnerText;
            list.Add(obj);
        }
        var result = list.OrderBy(p => p.IsVisible).ToList();
        return result.ToArray();

并在视图中:-

 $(document).ready(function () {
        $.post(siteUrl.getSiteUrl + '/Admin/ReadXml/', function (data) {
            alert(data.length);
            var st = JSON.stringify(data);
            alert(st.length);
        });
    });    

长度总是显示 54 但在数组中只有 4 个项目。我如何从 json 对象中通过 json 从数组中读取所有记录。

提前致谢。

4

1 回答 1

0

尝试使用控制器方法Json从控制器方法返回 JsonResult

var result = list.OrderBy(p => p.IsVisible).ToList();
return Json(result.ToArray());

在 JavaScript 上,您应该只需要遍历数组,如下所示:

$(document).ready(function () {
    $.post(siteUrl.getSiteUrl + '/Admin/ReadXml/', function (data) {
        for(var i = 0;i < data.length; i++){
            alert(data[i].Name);
        }
    });
});
于 2012-12-06T17:47:35.127 回答