2016-06-08 23 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似乎是正確的答案。謝謝我。