Linq to XML - SmarterMail API 响应 jQuery 数据表

Linq to XML - SmarterMail API response to jQuery dataTables

好的,四处寻找并尝试了所有可能的解决方案。所以,一定要简单一些。

我正在使用 SmarterMail API 来 return 邮件列表列表。我想在需要字符串数组列表的 jQuery DataTable 中显示结果。如何获取生成的字符串列表并将其转换为字符串数组列表?下面的代码几乎可以工作,但我最终只得到每个邮件列表名称的第一个字母。

使用 .NET C# MVC。这是我的控制器的方法。

public ActionResult getMailingLists(jQueryDataTableParamModel param)
{
    svcMailListAdmin.PreInvoke();
    svcMailListAdmin.AddParameter("AuthUserName", SM_AuthUserName);
    svcMailListAdmin.AddParameter("AuthPassword", SM_AuthPassword);
    svcMailListAdmin.AddParameter("DomainName", SM_DomainName);

    svcMailListAdmin.Invoke("GetMailingListsByDomain");
    svcMailListAdmin.PostInvoke();

    var resultXML = svcMailListAdmin.ResultXML;

    var resultList = resultXML.Root.Elements("listNames")
                        .Elements("string")
                        .OrderBy(i => (string)i)
                        .Select(i => (string)i)
                        .ToList();

    return Json(new
    {
        sEcho = param.sEcho,
        iTotalRecords = resultList.Count,
        iTotalDisplayRecords = resultList.Count,
        aaData = resultList
    },
    JsonRequestBehavior.AllowGet);
}

稍作改动,现在似乎可以使用了。对于需要 return 多列的情况,我也可以将其用作模型。

public ActionResult getMailingLists(jQueryDataTableParamModel param)
{
    svcMailListAdmin.PreInvoke();
    svcMailListAdmin.AddParameter("AuthUserName", SM_AuthUserName);
    svcMailListAdmin.AddParameter("AuthPassword", SM_AuthPassword);
    svcMailListAdmin.AddParameter("DomainName", SM_DomainName);

    svcMailListAdmin.Invoke("GetMailingListsByDomain");
    svcMailListAdmin.PostInvoke();

    var resultXML = svcMailListAdmin.ResultXML;

    var resultsList = resultXML.Root.Elements("listNames")
                    .Elements("string")
                    .Select(i => new List<string>()
                    {
                        (string)i
                    }).ToList();

    return Json(new
    {
        sEcho = param.sEcho,
        iTotalRecords = resultsList.Count,
        iTotalDisplayRecords = resultsList.Count,
        aaData = resultsList
    },
    JsonRequestBehavior.AllowGet);
}