2014-10-27 86 views
1

我想從DotnetNuke收集userInfo到我的javascript網頁。 要收集它,我利用$ .getJSON:如何從javascript訪問DotnetNuke.Entities.Users

$.getJSON("/DesktopModules/myModule/API/Service/GetUsers", "portalId=2", 
    function (allData) { 
     var mappedUsers = $.map(allData, function (item) { 
      return new myModule.User(item); 
     }); 
     self.Users(mappedUsers); 
    }); 

我有這樣的服務控制器:

public class ServiceController : DnnApiController 
{ 
    [AllowAnonymous] 
    [HttpGet] 
    public HttpResponseMessage GetUsers(int portalId) 
    { 
     myController controller = new myController(); 
     ArrayList items = controller.GetUsers(portalId); 
     return Request.CreateResponse(HttpStatusCode.OK, items); 
    } 
} 

public class myController // : ISearchable, IPortable 
{ 
    public ArrayList GetUsers(int portalId) 
    { 
     return UserController.GetUsers(portalId); 
    } 
} 

按照DNN API文檔的方法定義爲:

public static ArrayList GetUsers(
    int portalId 
) 

但當我在瀏覽器中測試我的服務時,它會失敗,並顯示以下錯誤: 「鍵入'DotNetNuke.Entities.Users.UserInfo',數據協定名稱爲'UserInfo:http://schemas.datacontract.org/2004/07/DotNetNuke.Entities.Users'不是預期的。考慮使用DataContractResolver或將任何不知道的類型靜態添加到已知類型列表中 - 例如,通過使用KnownTypeAttribute屬性或將它們添加到傳遞給DataContractSerializer的已知類型列表中。「

任何想法如何解決這個?

+0

如果這個DNN 7? – braindice 2015-01-19 19:16:18

回答

1

的問題是,你不能沒有設置自定義序列化序列化用戶信息。用戶信息對象不能被序列化JSON自動。

最簡單的解決辦法是創建自己的對象代表UserInfo在您的回覆中 - 無論是減少課程還是僅僅是您需要的各種屬性。