2016-06-08 17 views
0

好吧,无处不在,试着感受每种可能的解决方案。所以,这一定很简单。Linq to XML - SmarterMail API对jQuery数据表的响应

我正在使用SmarterMail API返回邮件列表的列表。我想在一个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); 
} 

修订1:

做了一个轻微的变化,现在它似乎工作。我也可以将它用作需要返回多个列的情况的模型。

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); 
} 

回答

0

上述修订1似乎是正确的答案。谢谢我。